3

サブプロセスを使用してPythonスクリプト内で外部プログラムを呼び出しています。外部プログラムは多くの出力を生成します。このプログラムの出力をキャプチャする必要があります。現在のコードは次のようなものです。

process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=None)
process.stdin.write('gams "indus89.gms"\r\n')
while process.poll() != None:
    line = process.stdout.readline()
    print line

このコードで発生するエラーは

プロセスは存在しないパイプに書き込もうとしました。

次のコードを使用する場合:

process = subprocess.Popen('cmd.exe', shell=False, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=None)
process.stdin.write('gams "indus89.gms"\r\n')
o, e = process.communicate()
print o 

その場合、プログラムの出力はキャプチャされません。

実行中にサードパーティプログラムの出力をキャプチャできるように、コードをどのように変更する必要がありますか?

4

1 に答える 1

3

ポペンはやり過ぎです。

試す:

output = subprocess.check_output('gams "indus89.gms"\r\n', shell=True)

うまくいけば、それはあなたの環境でうまくいくでしょう。

于 2012-05-22T21:58:55.353 に答える