如何在EOF之前读取用户输入?

How to read user input until EOF?

提问人:Saphire 提问时间:1/20/2014 更新时间:10/15/2021 访问量:127379

问:

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

我目前是这样做的:

input = raw_input ("Input: ")

但是,如何将其更改为 EOF 就绪版本?

python 字符串 输入 eof

评论


答:

67赞 falsetru 1/20/2014 #1

使用 file.read

input_str = sys.stdin.read()

根据文档:

file.read([size])

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

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

顺便说一句,不要用作变量名称。它隐藏了内置函数输入input

26赞 Joel Cornett 1/20/2014 #2

您还可以执行以下操作:

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

评论

1赞 Yosh 5/21/2014
导入时,这可能比 sys.stdin.read 更方便。readline
10赞 Pet B 11/7/2015 #3

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

import sys

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

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

对于 or version,写成这样: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
86赞 arekolek 3/26/2016 #4

在 Python 3 中,您可以遍历标准输入的行,当达到 EOF 时,循环将停止:

from sys import stdin

for line in stdin:
  print(line, end='')

line包括尾随字符\n

联机运行此示例:https://ideone.com/rUXCIe


这可能是大多数人都在寻找的,但是,如果您只想将整个输入读取到单个变量(如 OP)中,直到 EOF 为止,那么您可能需要查看其他答案