Python3读取未知多行输入的最佳方法

Maz*_*one 5 python user-input input eof python-3.x

当输入量未知时,Python 3中读取多行用户输入的最佳方法是什么?多行输入将由Enter分隔

当我尝试使用

while True:
    line = input()
    if line:
          print(line)
    else:
          break
Run Code Online (Sandbox Code Playgroud)

我收到一个EOFError

然后,如果我将其更改为try-catch块

while True:
    line = input()
    try:
          print(line)
    except EOFError:
          break
Run Code Online (Sandbox Code Playgroud)

我仍然收到EOFError。

Wil*_*sem 6

在EOFError当你打电话时input(),不是当你测试它,也不当你打印出来。因此,这意味着您应该放入input()一个try子句:

try:
    line = input()
    print(line)
except EOFError:
    break
Run Code Online (Sandbox Code Playgroud)

话虽如此,如果input从标准输入通道读取数据,则可以将其用作可迭代对象:

import sys

for line in sys.stdin:
    print(line, end='')
Run Code Online (Sandbox Code Playgroud)

由于line现在每个行都以换行符结尾,因此'\n'我们可以end=''在print函数中使用,以防止两次打印新行(一次从字符串开始,一次从print函数开始)。

我认为最后一个版本更优雅,因为它在语法上几乎说您要遍历stdin和分别处理行。