How to read user input until EOF?

后端 未结 4 1453
有刺的猬
有刺的猬 2020-12-13 12:22

My current code reads user input until line-break. But I am trying to change that to a format, where the user can write input until strg+d to end his input.

I curren

相关标签:
4条回答
  • 2020-12-13 12:51

    Use file.read:

    input_str = sys.stdin.read()
    

    According to the documentation:

    file.read([size])

    Read at most size bytes from the file (less if the read hits EOF before obtaining size bytes). If the size argument is negative or omitted, read all data until EOF is reached.

    >>> import sys
    >>> isinstance(sys.stdin, file)
    True
    

    BTW, dont' use input as a variable name. It shadows builtin function input.

    0 讨论(0)
  • 2020-12-13 13:06

    This worked for me in Python 3:

    from sys import stdin
    
    for line in stdin:
      print(line)
    

    line includes the trailing \n character

    Run this example online: https://ideone.com/Wn15fP

    0 讨论(0)
  • 2020-12-13 13:09

    You could also do the following:

    acc = []
    out = ''
    while True:
        try:
            acc.append(raw_input('> ')) # Or whatever prompt you prefer to use.
        except EOFError:
            out = '\n'.join(acc)
            break
    
    0 讨论(0)
  • 2020-12-13 13:09

    With sys.stdin.readline() you could write like this:

    import sys
    
    while True:
        input_ = sys.stdin.readline()
        if input_ == '':
            break
        print type(input_)
        sys.stdout.write(input_)
    

    Remember, whatever your input is, it is a string.

    For raw_input or input version, write like this:

    while True:
        try:
            input_ = input("Enter:\t")
            #or
            _input = raw_input("Enter:\t")
        except EOFError:
            break
        print type(input_)
        print type(_input)
        print input_
        print _input
    
    0 讨论(0)
提交回复
热议问题