我认为这个程序将逐行回显我的控制台输入:
import os, sys
for line in sys.stdin:
print line
不幸的是它等待EOF( Ctrl + D ),然后它产生输出。我应该如何修改我的程序以逐行获取输出?
答案 0 :(得分:9)
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()
上有两个参数的文档,它实际上是从这样的文件中读取的一个例子。
答案 1 :(得分:4)
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()
时,它会从文件中读取一行并执行你的循环一次。