在C++或其他编程语言中,您可以编写连续从标准输入读取输入行并在每行后输出结果的程序。示例如下:
while (true) {
readline
break if eof
print process(line)
}
我似乎无法在Python中获得这种行为,因为它会缓冲输出(即直到循环结束才会发生打印操作)。因此,当程序完成时,所有内容都会被打印出来。我该如何获得与C程序相同的行为(其中endl刷新缓冲区)?
您是否有一个能够展示问题的例子?
例如(Python 3):
def process(line):
return len(line)
try:
while True:
line = input()
print(process(line))
except EOFError:
pass
在每行后打印每行的长度。
import sys
while True:
input = raw_input("Provide input to process")
# process input
print process(input)
sys.stdout.flush()
Python不应该在换行符之后缓存文本,但如果出现这种情况,您可以尝试使用sys.stdout.flush()
。
sys.stdout.flush()
实际上是正确的方法。 - Edward Falk$ cat test.py
import sys
while True:
print sys.stdin.read(1)
然后我在终端中运行它,在输入'123'和'456'后按Enter键
$ python test.py
123
1
2
3
456
4
5
6