我正在尝试在我的Python脚本中实现一个函数来自动编译TeX文件。我正在尝试使用subprocess module;这就是我正在做的事情:
def createpdf(output):
args = ['pdflatex', output, '-interaction=nonstopmode']
process = subprocess.call(args,
stdout = subprocess.PIPE,
stderr = subprocess.PIPE,
stdin = subprocess.PIPE)
当我在终端中使用我的TeX文件运行pdflatex时,它编译得很好。但是当我运行我的Python脚本时,它不会编译。似乎编译过程开始,但几分钟后,它没有任何理由停止。我查看了日志文件,它没有打印任何错误消息。
答案 0 :(得分:1)
当您将输出管道设置为subprocess.PIPE
时,子进程会创建一个缓冲区来保存子进程的输出,直到您的进程读取它为止。如果您从未从process.stdout
和process.stderr
读取,则pdflatex可以填充缓冲区并阻止。
您需要discard their output或只需致电subprocess.call(args)
,让它们流经您的程序输出。