【发布时间】:2011-12-19 21:45:45
【问题描述】:
$ cat script.py
import sys
for line in sys.stdin:
sys.stdout.write(line)
sys.stdout.flush()
$ cat script.py - | python -u script.py
输出是正确的,但只有在我按下 Ctrl-D 后才会开始打印,而以下内容会立即开始打印:
$ cat script.py - | cat
这让我认为缓冲不是来自猫。
我设法让它工作:
for line in iter(sys.stdin.readline, ""):
正如这里所解释的:Streaming pipes in Python,但我不明白为什么以前的解决方案不能按预期工作。
【问题讨论】:
标签: python stdout pipe buffering