在C ++或任何其他语言中,您可以编写连续从stdin获取输入行的程序,并在每行后输出结果。类似的东西:
while (true) {
readline
break if eof
print process(line)
}
我似乎无法在Python中获得这种行为,因为它会缓冲输出(即在循环退出(?)之前不会进行打印)。因此,程序完成后会打印所有内容。如何获得与C程序相同的行为(其中endl刷新)。
答案 0 :(得分:2)
你有一个显示问题的例子吗?
例如(Python 3):
def process(line):
return len(line)
try:
while True:
line = input()
print(process(line))
except EOFError:
pass
打印每行后每行的长度。
答案 1 :(得分:2)
使用sys.stdout.flush()清除打印缓冲区。
import sys
while True:
input = raw_input("Provide input to process")
# process input
print process(input)
sys.stdout.flush()
答案 2 :(得分:1)
Python不应该将文本缓冲到换行符之外,但如果发生了这种情况,你可以尝试sys.stdout.flush()
。
答案 3 :(得分:0)
$ 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