我想将stdout从python传输到另一个程序,但我正面临一个问题,即我的stdout没有用管道传输。
我把它简化为一个简单的样本:
import time
while True:
print("Hello!")
time.sleep(1)
我像猫一样检查它:
./my_python_script.py | cat
然后我一无所获。
奇怪的是,如果我删除sleep命令它会正常工作。但是,我不想快速输出输出,所以我真的想睡一会儿。
我查看了相应的bash脚本:
while true; do
echo "Hello!"
sleep 1
done
这也像魅力一样。所以任何想法为什么python脚本不按预期管道输出?谢谢!
答案 0 :(得分:5)
你需要刷新标准输出:
import time
import sys
while True:
print("Hello!")
sys.stdout.flush()
time.sleep(1)