本文介绍了从sys.stdin读取的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 29岁程序员,3月因学历无情被辞! 在这个例子中我不能脱离for循环: ------ import sys lst = [] for sys.stdin中的行: lst.append(line) break 打印lst ----------- 但是,我可以打破我执行此操作时不在for循环中: --------- 导入系统 lst = [] for line in open(" aaa.txt"): lst.append(line) 打破 打印lst ---------- 为什么不在第一个例子中打破工作?I can''t break out of the for loop in this example:------import syslst = []for line in sys.stdin:lst.append(line)breakprint lst-----------But, I can break out of the for loop when I do this:---------import syslst = []for line in open("aaa.txt"):lst.append(line)breakprint lst----------Why doesn''t break work in the first example?推荐答案 适合我。但只有在使用C-d关闭stdin之后。 我认为这是操作系统的事情。第一行不会传递给 进程,直到文件关闭 - C-d - 或OS填充之前操作系统 的缓冲区。你可以以某种方式切换到无缓冲的behviour ,google for it。 Termios应该在你的查询中。 无论哪种方式,它都不是python表现不同。 DiezWorks for me. But only after the stdin is closed with a C-d.I presume this is an OS thing. The first lines aren''t communicated tothe process until either the file is closed - C-d - or the buffer the OSputs before the stream is filled. You can switch to unbuffered behvioursomehow, google for it. Termios should be in your query.Either way, it''s not python behaving differently.Diez 我的猜测是因为你没有进入EOF。尝试输入^ D(或 ,如果你在Windows上,我认为它是^ Z),同时使用你的第一个例子 ,看看它做了什么。 br />My guess is because you''ve not entered an EOF. Try entering ^D (orif you''re on Windows I think it''s ^Z) while using your first exampleand see what it does. Python 2.5.1c1(r251c1:54692,2007年4月5日,09:19:18)[MSC v.1310 32 bit (英特尔)] win32上 输入help,copyright,credit等等。或许可证或更多信息。 pyimport sys pylst = [] sys.stdin中的pyfor行: 。 ... lst.append(线) ....休息 .... hola que tal como estan ^ Z pyprint lst b $ b [''hola \ n''] ----------- 我打字很多行,但是lst只包含一个项目,正如预期的那样。与常规文件示例相同 :文件包含许多行,但只有 首先进入列表。 - Gabriel GenellinaPython 2.5.1c1 (r251c1:54692, Apr 5 2007, 09:19:18) [MSC v.1310 32 bit(Intel)]on win32Type "help", "copyright", "credits" or "license" for more information.pyimport syspylst = []pyfor line in sys.stdin:.... lst.append(line).... break....holaquetalcomoestan^Zpyprint lst[''hola\n'']-----------I typed many lines, but lst contains only one item, as expected. Same asyour regular file example: the file contains many lines, but only thefirst goes into the list.--Gabriel Genellina 这篇关于从sys.stdin读取的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-23 19:33