2017-05-09 109 views
0

我使用python中的子流程來捕捉來自bazel應用tensorflow的結果。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並查看錯誤信息。 – sberry

+2

正如@sberry所說 - 輸出可能會發送到'stderr' ...另外,當使用'subprocess'模塊時,你可以在'Popen'周圍使用'check_output'包裝器,例如:'output = subprocess.check_output(cmd ,stderr = subprocess.PIPE,shell = True)' –

+1

另外,這裏不需要'shell = True'。該命令位於列表中,可以在不通過子shell的情況下執行。 – tdelaney

回答

0

解決的評論:

Try also capturing stderr with stderr=subprocess.PIPE and output, err = pipe.communicate() and see what is in err. – sberry