2012-10-09 10 views
0

에 표준 출력합니다. 해당 서브 프로세스에서 을 사용하고 바로 뒤에 sys.stduout.read()을 시도했지만 출력을 캡처하지 않습니다.인쇄 내가 다음과 같이 서브 프로세스를 실행하는 스크립트가 서브 프로세스

저는 파이썬을 처음 접했고 파이썬에서 그 정도의 복잡성을 달성하지 못했습니다. 실제로 C에서 저수준을 사용하고 있으며 일부 Python 테스트 스크립트가 있으며 하위 프로세스에서 출력하는 방법을 모르겠습니다.

제안 사항?

+0

파이썬 스크립트를 모듈로 사용하는 대신 새로운 인터프리터에서 실행하는 이유는 무엇입니까? – wim

답변

1

sys.stdout.read (및 write)은 표준 입력/출력 현재 프로세스 (하위 프로세스 아님) 용입니다. 그것은 일반적으로 물론

child_process = subprocess.Popen(... , stdout=subprocess.PIPE) 
child_process.stdout.read("This is the data that comes back") 

:

child_process.stdin.write("this goes to child") #Popen(..., stdin=subprocess.PIPE) 

과 비슷한 아이의 표준 출력 스트림에서 읽기 위해 : 당신은 자식 프로세스의 표준 입력에 기록하려는 경우, 당신은 사용할 필요가 사용하는 것이 더 관용적 :

stdoutdata, stderrdata = child_process.communicate(stdindata) 

(돌보는을 적절한 경우는 popen 생성자에 subprocess.PIPE를 전달하는 데) 입력 데이터를 한꺼번에 전달할 수 있어야합니다.

관련 문제