如何编写适用于Linux管道的Python脚本?

时间:2015-09-12 13:21:12

标签: python linux

speaker.py中,我使用print将文字输出到STDOUT

import time

while True:
    time.sleep(1)
    print("hello")

listener.py中,我使用input来阅读STDIN

while True:
    line = input()
    if not line:
        break
    print(line)

我正在尝试用管道连接这两个脚本:

python speaker.py | python listener.py

但是listner.py没有输出任何内容。

怎么了?

2 个答案:

答案 0 :(得分:5)

本身没有任何问题,但你碰到了缓冲。取出sleep,您应该立即看到输出。

http://mywiki.wooledge.org/BashFAQ/009名义上是一个Bash问题,但适用于任何Unix类型的I / O,并彻底解释了这些问题。

答案 1 :(得分:5)

Andrea提到的重新打开stdout的替代方法是使用-u选项以无缓冲模式启动Python:

python -u speaker.py | python -u listener.py