没有从失败的subprocess.Popen获取任何错误消息

时间:2014-10-22 23:29:21

标签: python subprocess popen pdflatex communicate

我设置了一个subprocess.Popen来通过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

1 个答案:

答案 0 :(得分:1)

试试这个:

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

我更喜欢subprocess.check_output(),更方便。