首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >文件结束输入Python

文件结束输入Python
EN

Stack Overflow用户
提问于 2018-07-19 06:58:31
回答 1查看 1.8K关注 0票数 1

我在试着解决Kattis的问题。完整的问题在以下链接中找到:https://open.kattis.com/problems/addingwords

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

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

代码语言:javascript
复制
import sys

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

在此之后,我像往常一样在上面的缩进中继续执行程序。我的问题是,我如何测试程序是否在cmd中工作?我想测试几个案例,但是当我输入一些东西时,命令提示符会一直等待其他结果,而不是输出任何内容。当我按下C键时,程序突然结束。我们应该如何检查程序是否工作,同时接受用户输入,直到文件结束?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-19 07:14:35

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

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

代码语言:javascript
复制
for line in sys.stdin:
    print('got line!')

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51412086

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档