我正在编写一个 python 脚本,它可以通过管道从另一个命令读取输入,就像这样
batch_job | myparser
我的脚本myparser
处理输出batch_job
并写入它自己的标准输出。我的问题是我想立即查看输出(batch_job 的输出是逐行处理的),但似乎有这个臭名昭著的标准输入缓冲(据称是 4KB,我尚未验证)延迟了一切。
我尝试了以下方法:
- 使用打开标准输入
os.fdopen(sys.stdin.fileno(), 'r', 0)
-u
在我的 hashbang 中使用:#!/usr/bin/python -u
export PYTHONUNBUFFERED=1
在调用脚本之前设置- 在读取的每一行之后刷新我的输出(以防问题来自输出缓冲而不是输入缓冲)
我的 python 版本是 2.4.3 - 我不可能升级或安装任何额外的程序或包。我怎样才能摆脱这些延迟?