小编Cia*_*anH的帖子

有没有办法从当前正在执行的python程序逐行输出管道?

将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秒的时间间隔message2message3.

我希望这是因为只有python解释器完成执行后才能获得下一个命令的输出.有没有办法改变这种行为?

python bash grep pipe

6
推荐指数
1
解决办法
182
查看次数

标签 统计

bash ×1

grep ×1

pipe ×1

python ×1