-1

我知道在这里发布了类似的问题,但我的代码无法正常工作。我想将一个 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()

第一.py:

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

输出不产生任何东西

有什么建议吗?

4

1 回答 1

0

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

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

于 2012-07-15T10:17:53.533 回答