• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

为什么stdin是一行一行地阅读,而不是像字符串一样一字一句地阅读?

python 来源:Shea 6次浏览

program1.py:为什么stdin是一行一行地阅读,而不是像字符串一样一字一句地阅读?

a = "this is a test" 
for x in a: 
    print(x) 

program2.py:

a = """this is a test 
     with more than one line 
     three, to be exact""" 
for x in a: 
    print(x) 

program3.py:

import sys 

for x in sys.stdin: 
    print(x) 

infile.txt:

这是一个测试
个与多行
只是一样的第二个例子
但具有更多的单词

为什么程序1和程序2两个输出在一个单独的行中的字符串中的每个字符,但如果我们运行cat infile.txt | python3 program3.py,它输出一行一行的文字?


===========解决方案如下:

说明sys.stdin,从蟒docs:对应于该解释器的标准输入,输出和错误流

File对象。

所以sys.stdin是一个文件对象,而不是一个字符串。要了解有关文件对象的迭代器的工作,看看,再一次,蟒蛇docs:

当一个文件被用作迭代,通常在for循环中(例如,在F线:打印line.strip()),next()方法被重复调用。这个方法返回下一个输入行,或者当打开文件时读取EOF时触发ECI(当文件打开写入时行为不确定)

因此,迭代器产生下一行输入在每次调用时,而不是在字符串上观察到的逐字符迭代。


版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)