2017-05-09 3 views
0

파이썬에서 하위 프로세스를 사용하여 바젤 응용 프로그램 텐서 흐름의 결과를 캡처합니다.파이썬 하위 프로세스 출력

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