【发布时间】:2013-02-11 16:11:57
【问题描述】:
当将 python 脚本的打印输出通过管道传输到 grep 等命令时,脚本的输出似乎仅在整个脚本完成后才通过管道传输到后续命令。
例如,在脚本test_grep.py 中,如下所示:
#!/usr/bin/env python
from time import sleep
print "message1"
sleep(5)
print "message2"
sleep(5)
print "message3"
当使用./test_grep.py | grep message 调用时,10 秒内什么都不会出现,此时所有三行都会出现。
将此与脚本test_grep.sh进行比较:
#!/usr/bin/env bash
echo "message1"
sleep 5
echo "message2"
sleep 5
echo "message3"
./test_grep.sh | grep message 将立即输出 message1,然后每隔 5 秒输出一次 message2 和 message3。
我希望这是因为只有在 python 解释器完成执行后,输出才可用于下一个命令。有没有办法改变这种行为?
【问题讨论】:
-
有趣的问题:)