2015-01-24 4 views
3

ipython 노트를 사용하면 subprocess에 의해 생성 된 하위 프로세스의 출력이 절대로 노트 자체에 나타나지 않습니다. 예를 들어, 셀자식 프로세스의 ipython 노트 출력

import subprocess 
subprocess.check_call(['echo', 'hello']) 

만 출력으로서 0 나타내고, hello은 ipython 발사되는 단자에 출력된다.

조정할 수있는 구성 매개 변수가 있습니다. 하위 프로세스의 출력이 노트북 자체에 표시되도록 조정할 수 있습니까?


사실 사용자 정의 python c 확장은 또한 출력을 삼켰습니다. 어떤 문제가 있습니까?

답변

3

출력을 캡처하려면 check_output을 사용하십시오. check_call은 종료 코드를 반환합니다.

import subprocess 
print subprocess.check_output(['echo', 'hello']) 
+0

전체 출력은'check_output'를 사용하는 경우 명령이 완료된 후 캡처, 표준 에러를 볼 수 있습니다. 실제로 호출하길 원하는 프로세스는 오래 실행되며 stdout 및 stderr에 많은 로깅 정보를 씁니다. 실행 중에 이러한 로깅 정보를보고 싶습니다. 따라서'check_output'은 갈 길이 아닙니다. –

+0

체크 아웃 http://stackoverflow.com/a/4417735 – Amit

3
from subprocess import Popen, PIPE 
p = Popen (['echo', 'hello'], stdout=PIPE) 
out = p.communicate() 
print (out) 
(b'hello\n', None) 

또한 유사