Python 从无缓冲的标准输入读取和输出
在C++或者其他编程语言中,你可以写一个程序,让它不停地从标准输入(stdin)读取输入的每一行,然后在每一行后面输出结果。就像这样:
while (true) {
readline
break if eof
print process(line)
}
但是我在Python中似乎无法实现这种行为,因为Python会把输出先存起来(也就是说,直到循环结束之前不会打印任何东西)。所以,所有的内容都是在程序结束时才一起打印出来。我该怎么做才能让Python的行为和C语言的程序一样(在这里,endl会立即输出)呢?
4 个回答
1
在Python中,文本在遇到换行符时不应该被缓存,但如果你遇到这种情况,可以试试 sys.stdout.flush()
这个命令。
2
使用 sys.stdout.flush() 可以清空打印缓冲区。
import sys
while True:
input = raw_input("Provide input to process")
# process input
print process(input)
sys.stdout.flush()
3
你有没有一个例子来说明这个问题呢?
比如说(Python 3):
def process(line):
return len(line)
try:
while True:
line = input()
print(process(line))
except EOFError:
pass
这个代码会在每一行后面打印出该行的长度。