将python脚本的打印输出传递给像grep这样的命令时,脚本的输出似乎只能在完成整个脚本后通过管道连接到后续命令.
例如,在如下的脚本中test_grep.py:
#!/usr/bin/env python
from time import sleep
print "message1"
sleep(5)
print "message2"
sleep(5)
print "message3"
Run Code Online (Sandbox Code Playgroud)
当调用时./test_grep.py | grep message,10秒内不会出现任何内容,此时将显示所有三行.
将其与脚本进行比较test_grep.sh:
#!/usr/bin/env bash
echo "message1"
sleep 5
echo "message2"
sleep 5
echo "message3"
Run Code Online (Sandbox Code Playgroud)
./test_grep.sh | grep message会立即输出message1,随后在5秒的时间间隔message2和message3.
我希望这是因为只有python解释器完成执行后才能获得下一个命令的输出.有没有办法改变这种行为?