How to read user input until EOF?

2020-02-23 06:12发布

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 currently do it like this:

input = raw_input ("Input: ")

But how can I change that to an EOF-Ready version?

4条回答
女痞
2楼-- · 2020-02-23 06:35

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.

查看更多
啃猪蹄的小仙女
3楼-- · 2020-02-23 06:38

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
查看更多
相关推荐>>
4楼-- · 2020-02-23 06:42

This worked for me in Python 3:

from sys import stdin

for line in stdin:
  print(line)
查看更多
三岁会撩人
5楼-- · 2020-02-23 06:46

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
查看更多
登录 后发表回答