2011-10-29 23 views
1

subprocess.Popenを使用してコマンドを実行する必要があります。私は実行する必要が コマンドである:他の引数-t-1がシェルに出力(ログ)を可能にするためであるがsubprocess.Popen help

./Test -t -1 

テストが実行可能ファイルです。出力をログファイルに書きたい。

残念ながら私はそれを行うことができません。

私はこのように試してみました:

output = open("outputlog.log", "a") 
subprocess.Popen(["./Test", "-t", "-1"], stdout = output) 

この点で私を助けてください。

よろしく Tamoor

答えて

1

はこれを試してみてください。

output = open("outputlog.log", "a") 
p = subprocess.Popen(["./Test", "-t", "-1"], stdout=subprocess.PIPE) 
output.writelines(p.stdout.readlines()) 
0

二つの物事がうまく行くかもしれない:

  1. Test -t -1はない標準出力、標準エラー出力への書き込みをすることができます。
  2. outputは、バッファが に書き込まれる前に、フラッシュまたはクローズする必要があります。

試してみてください。

with open("outputlog.log", "a") as output: 
    subprocess.Popen(["./Test", "-t", "-1"], stdout=output, stderr=output) 

これはoutputにstdoutとstderrの両方を書き込み、クローズ(およびフラッシュ)しますoutputときwith -suite終了します。