管道两个python程序

时间:2012-07-15 09:58:39

标签: python subprocess pipe

我知道这里发布了类似的问题,但我的代码无法运行。 我想将一个python程序输出传递给其他人的输入。等待输入的那个有raw_input('>')

我正在尝试运行的代码是:

import subprocess
gen = subprocess.Popen(['python', 'first.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
start = subprocess.Popen(['python','second.py'], stdin=gen.stdout, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
start.communicate()

first.py:

try:
    while(1):
        print gen()
        time.sleep(1)
except KeyboardInterrupt:
    sys.exit(1)

输出不会产生任何东西

有任何建议吗?

1 个答案:

答案 0 :(得分:0)

你的完整second.py是什么样的?即使它应该与raw_input()一起使用,你是否尝试从sys.stdin读取?您显示的代码段看起来很好,因为它对我有用。

另一个可能的问题是,当程序继续执行时,你的first.py永远不会完成。除非第一个子进程命令已完成,否则不会执行第二个子进程命令。所以试试你的first.py没有无限循环。让它停下来然后尝试,也许你的管道可以工作。