2014-10-22 12 views
2

pdflatex를 통해 pdf를 생성하기 위해 하위 프로세스를 설정합니다. 코드 스 니펫 :실패한 하위 프로세스에서 오류 메시지가 표시되지 않습니다. 팝업 버튼

process = subprocess.Popen(command, stdout=subprocess.PIPE, shell=True) 
output, err = process.communicate() 

print output 
print err 

잘 작동하지만 문제는 오류 메시지입니다. pdflatex가 파일을 생성 할 수없는 경우 (예 : 인쇄 된 결과의 마지막에 "Fatal error occured, no output PDF file produced!"이라는 메시지가 나타나는데, 나는 여전히 "None"을 오류로 인쇄합니다. stderr=subprocess.PIPE 도움이 추가 :

어떤 통찰력은

편집을 감상 할 수있다. 나는 더 이상 "None"을 얻지 않는다, 그러나 나는 pdf의 발생이 성공적다는 것을 여부에 관계없이 빈 오류 메시지를 얻는다. 지금은 다음과 같습니다

process = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True) 
same as above 
+0

@ padraic cunningham 제거하면 "No such file or directory"와 같은 오류가 발생합니다 (shell = True로 찾아 내기 때문에 말도 안됩니다). – user2875994

+0

@padraic cunningham shell = True는 명령의 일부가 아닙니다. 내가하는 말은 어떻게 문제가 해결되는지 모르겠다./명령은 파일에 pdflatex를 실행하는 문자열이다. 완벽하게 잘 작동합니다. – user2875994

+0

@ padraic cunningham 잘 했어 : [link] (http://pastebin.com/231BGssL), 같은 결과. – user2875994

답변

1

이 시도 :

fout = open("temp.txt", "w") 
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=fout, shell=True) 

좀 더 편리 subprocess.check_output()를 선호한다.

+0

그게 나에게 빈 "temp.txt"파일을 제공합니다 (나는 stderr = fout이 fout에 오류를 작성한다고 가정합니다). – user2875994

+0

subprocess.PIPE를 사용해야합니까? STDOUT을 시도하십시오. 오류 메시지가 아닐 수도 있습니다. – Swing

+0

내가 이해할 수 있을지 모르겠다. stdout이 나에게 메시지를 준다. 관련이 없으므로 마지막 두 줄을 제외한 모든 줄을 잘라내어 인쇄합니다. 그 중 하나가 "치명적인 오류가 발생했습니다. 출력 PDF 파일이 생성되지 않았습니다!"라는 메시지가 표시되어 오류 메시지가 생성된다고 가정합니다. 여기 [link] (http://pastebin.com/)에서 볼 수 있습니다. rM0H2i8P) – user2875994