当输入量未知时,Python 3 中读取多行用户输入的最佳方式是什么?多行输入会用回车分隔
当我尝试使用
while True:
line = input()
if line:
print(line)
else:
break
我收到一个 EOFError
然后如果我把它改成try-catch block
while True:
line = input()
try:
print(line)
except EOFError:
break
我仍然收到 EOFError。
最佳答案
EOFError
发生在您调用 input()
时,而不是在您测试它时,也不是在您打印它时。所以这意味着您应该将input()
放在try
子句中:
try:
line = input()
print(line)
except EOFError:
break
也就是说,如果 input
从标准输入 channel 读取,您可以将它用作可迭代对象:
import sys
for line in sys.stdin:
print(line, end='')
由于现在每一行 line
都以换行符 '\n'
结束,我们可以在 中使用
函数,以防止打印新行两次(一次来自字符串,一次来自 end=''
>printprint
函数)。
我认为最后一个版本更优雅,因为它几乎在语法上说你迭代 stdin
并单独处理行。
关于Python3读取未知多行输入的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46592445/