文件结束输入Python

文件结束输入Python,python,eof,Python,Eof,我正在努力解决卡蒂斯的问题。完整问题可在以下链接中找到: 问题的一部分让我感到困惑的是:“输入是一个多达2000条命令的序列,每行一条,在文件末尾结束。” 这个输入的代码是什么?我试着这样做: import sys for line in sys.stdin.readlines(): #print('something') 在这之后,我继续从上面缩进的正常程序。我的问题是,如何测试程序是否在cmd中工作?我想测试一些情况,但是当我输入一些内容时,命令提示符会一直等待其他结果,而不是打

我正在努力解决卡蒂斯的问题。完整问题可在以下链接中找到:

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

这个输入的代码是什么?我试着这样做:

import sys

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

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

这里的问题是,
readlines()
渴望而不是懒惰。这意味着它将把整个文件读入内存(直到EOF),然后将其拆分为行并返回这些行的列表。因此,在使用交互式stdin时,
sys.stdin.readline()
将等待stdin结束(linux/macOS上为Ctrl-D,windows上为Ctrl+Z)

但是不需要
readlines()
(事实上,)。默认情况下,通过行在文件对象上进行迭代:

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

医生们甚至不同意。如果您确实需要列表中的所有行,那么只需执行
list(sys.stdin)

即可。因此,在cmd中编写一些输入命令并按Ctrl-D键后,应该显示输出?如果使用
readlines()
(或
list(sys.stdin)
)。但是不要那样做!(如果您在windows上)