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

标签 python python-3.x input user-input eof

当输入量未知时,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='' >print 函数,以防止打印新行两次(一次来自字符串,一次来自 print 函数)。

我认为最后一个版本更优雅,因为它几乎在语法上说你迭代 stdin 并单独处理行。

关于Python3读取未知多行输入的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46592445/

相关文章:

python - 没有名为 yum 的模块

python - Pandas 在索引和列上使用多重索引重新索引

django - 我无法使用应用程序的小部件调整来自定义我的 Django 表单

HTML 提交按钮的大小小于 100%?

python + 编写正确的CSV格式

python - 占位符在 django-cms 中不起作用

python - 数据框合并+与存在性测试比较

python-3.x - 在 tensorflow 数据集上应用 map 执行速度非常慢

javascript - 输入值有时不适用

javascript - 输入 Unresolved 任务