我认为这个程序会逐行回显我的控制台输入:
import os, sys
for line in sys.stdin:
print line
不幸的是,它等待 EOF ( Ctrl+ D) 然后产生输出。我应该如何修改我的程序以逐行获取输出?
Python 2.x:
for line in iter(sys.stdin.readline, ''):
print line,
Python 3.x:
for line in iter(sys.stdin.readline, ''):
print(line, end='')
请参阅iter()
带有两个参数的文档,它实际上是从这样的文件中读取的示例之一。
Python 2.x:
while True:
sys.stdout.write(sys.stdin.readline())
Python 3.x:
while True:
print(sys.stdin.readline(), end = "")
当您使用该for line in file:
语法时,Python 会为您管理缓冲,这意味着您无法控制在循环开始执行之前将读取多少行。当您调用file.readline()
时,它将从文件中读取一行并执行一次循环。