2017-08-01 10 views
1

私はffmpegと対話するためにPythonスクリプトで作業していました。しかし、私はすべてがうまくいっていても、stdoutは空でstderrはstdoutから何を期待するべきかを返すことに気づいた。出力がstdoutによって返されるように修正するにはどうすればよいですか?ここでPythonのサブプロセスがstderrとして出力を返す

は、現象を再現する最も簡単な例です:

from subprocess import Popen, PIPE 

p = Popen(['python', '-V'], stdin=PIPE, stdout=PIPE, stderr=PIPE) 
out, err = p.communicate() 
if out: 
    print("Output. ", out.decode()) 
else: 
    print("Error. ", err.decode()) 

は、ここで出力です:

Error. Python 3.6.1 :: Anaconda 4.4.0 (64-bit) 

私はあなたがリダイレクトできるWindows 10に

+0

ここであなたの質問は何ですか? – Xatyrian

答えて

2

を使用していることに注意すべきです処理のstderrstdoutに変更します。

from subprocess import PIPE, STDOUT 
p = subprocess.Popen(["python", "-V"], stdout=PIPE, stderr=STDOUT) 

次に、あなたはそうのようなプロセスによって生成された出力を取り出すことができますあなたのプロセスが終了した後に

out = p.stdout.read() 

これは、標準出力の内容を返します。

関連する問題