-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()

first.py:

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

出力は何も生成しません

何かアドバイスはありますか?

4

1 に答える 1

0

あなたの完全な second.py はどのようなものですか? raw_input() で動作するはずですが、sys.stdin から読み取ってみましたか? あなたが示したコードスニペットは、うまく機能しているように見えます。

もう 1 つの考えられる問題は、プログラムが実行を続けているため、first.py が完了しないことです。2 番目のサブプロセス コマンドは、最初のサブプロセス コマンドが完了するまで実行されません。したがって、無限ループなしで first.py を試してください。停止させてから試してみると、配管が機能する可能性があります。

于 2012-07-15T10:17:53.533 に答える