为什么stdin是一行一行地阅读,而不是像字符串一样一字一句地阅读?
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(当文件打开写入时行为不确定)
因此,迭代器产生下一行输入在每次调用时,而不是在字符串上观察到的逐字符迭代。
回答:
因为sys.stdin
中的数据是以行数组的形式存储的,所以当您运行for x in sys.stdin
时,它将一行一行而不是字符。要做到这一点你想试试这个:
for x in sys.stdin: for y in x:
print(y)
print("")
回答:
sys.stdin
是一个文件句柄。在文件句柄上迭代会一次产生一行。
以上是 为什么stdin是一行一行地阅读,而不是像字符串一样一字一句地阅读? 的全部内容, 来源链接: utcz.com/qa/260664.html