サブプロセスを使用して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
その場合、プログラムの出力はキャプチャされません。
実行中にサードパーティプログラムの出力をキャプチャできるように、コードをどのように変更する必要がありますか?