2017-05-09 11 views
0

私はPythonでサブプロセスを使用して、バインディングのテンソルフローの結果を取得します。Pythonのサブプロセス出力

import subprocess 
cmd = ["bazel-bin/tensorflow/examples/label_image/label_image"] 
pipe = subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True) 
output = pipe.communicate()[0] 
print "Result: ", output 

問題は結果を端末に表示され、私はリターンが結果

そして、変数「出力」でそれをキャプチャすることができないということです。(何も)

+4

'stderr = subprocess.PIPE'と' output、err = pipe.communicate() 'でstderrをキャプチャし、errにあるものを参照してください。 – sberry

+2

@sberryが言っているように、出力は 'stderr'になる可能性があります。また、' subprocess'モジュールを使うときは 'Popen'の周りに' check_output'ラッパーを使うことができます。例えば 'output = subprocess.check_output(cmd 、stderr = subprocess.PIPE、shell = True) ' –

+1

ここで' shell = True'は必要ありません。コマンドはリストにあり、サブシェルを実行せずに実行できます。 – tdelaney

答えて

0

はコメントで解決済み:

Try also capturing stderr with stderr=subprocess.PIPE and output, err = pipe.communicate() and see what is in err. – sberry 
関連する問題