文件输入结束 Python

End of File Input Python

我正在尝试解决 Kattis 问题。在 link 中找到了完整的问题:https://open.kattis.com/problems/addingwords

问题中我感到困惑的部分是:"Input is a sequence of up to 2000 commands, one per line, ending at end of file."

此输入的代码是什么?我试过这样做:

import sys

for line in sys.stdin.readlines():
    #print('something')

在此之后,我在上面的缩进内照常继续程序。我的问题是,我将如何测试该程序是否在 cmd 中运行?我想测试一些情况,但是当我输入一些东西时,命令提示符一直在等待其他结果,而不是打印出任何东西。当我按下控制 C 时,程序突然结束。我们应该如何在接受用户输入直到文件末尾时检查程序是否正常工作?

这里的问题是 readlines() 是渴望而不是懒惰。这意味着它会将整个文件读入内存(直到 EOF),然后将其拆分为行和 return 这些行的列表。因此,当使用交互式标准输入时,sys.stdin.readline() 将等到标准输入结束([=23= 上按 Ctrl-D,windows 上按 Ctrl+Z)。

但是不需要readlines()(事实上,you almost should never use it)。默认情况下迭代文件对象是按行进行的:

for line in sys.stdin:
    print('got line!')

文档甚至 admit that you should do this。如果您确实需要列表中的所有行,那么只需执行 list(sys.stdin).