如何读取用户输入直到EOF?

Sap*_*ire 36 python string input eof

我当前的代码读取用户输入直到换行.但我试图将其更改为一种格式,用户可以写入输入,直到strg + d结束输入.

我目前这样做:

input = raw_input ("Input: ")
Run Code Online (Sandbox Code Playgroud)

但是如何将其更改为EOF-Ready版本?

fal*_*tru 39

用途file.read:

input_str = sys.stdin.read()
Run Code Online (Sandbox Code Playgroud)

根据文件:

file.read([size])

从文件中读取最多大小字节(如果读取在获取大小字节之前达到EOF,则更少).如果size参数为负数或省略,则读取所有数据,直到达到EOF.

>>> import sys
>>> isinstance(sys.stdin, file)
True
Run Code Online (Sandbox Code Playgroud)

顺便说一句,不要input用作变量名.它影响内置功能input.


are*_*lek 32

这在Python 3中对我有用:

from sys import stdin

for line in stdin:
  print(line)
Run Code Online (Sandbox Code Playgroud)

  • 在Uva在线裁判中完美运行。谢谢。 (2认同)

Joe*_*ett 23

您还可以执行以下操作:

acc = []
out = ''
while True:
    try:
        acc.append(raw_input('> ')) # Or whatever prompt you prefer to use.
    except EOFError:
        out = '\n'.join(acc)
        break
Run Code Online (Sandbox Code Playgroud)


小智 7

有了sys.stdin.readline()你可以这样写:

import sys

while True:
    input_ = sys.stdin.readline()
    if input_ == '':
        break
    print type(input_)
    sys.stdout.write(input_)
Run Code Online (Sandbox Code Playgroud)

请记住,无论您的输入是什么,它都是一个字符串。

对于raw_inputinput版本,这样写:

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
Run Code Online (Sandbox Code Playgroud)