文件输入Python结束

时间:2018-07-18 22:58:31

标签: python eof

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

我感到困惑的部分是:“输入是多达2000条命令的序列,每行一个,在文件末尾结束。”

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

import sys

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

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

1 个答案:

答案 0 :(得分:2)

这里的问题是readlines()渴望不偷懒。这意味着它将把整个文件读入内存(直到EOF),然后将其分成几行并返回这些行的列表。因此,在使用交互式stdin时,sys.stdin.readline()将等到stdin结束(在linux / macOS上为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)