gpt4 book ai didi

python - mac 上 python 子进程中的 pdflatex

转载 作者:太空狗 更新时间:2023-10-30 02:50:12 24 4
gpt4 key购买 nike

我正在尝试在 Python 2.4.4 的 .tex 文件上运行 pdflatex。子进程(在 Mac 上):

import subprocess
subprocess.Popen(["pdflatex", "fullpathtotexfile"], shell=True)

实际上什么都不做。但是,我可以在终端中毫无问题地运行“pdflatex fullpathtotexfile”,生成 pdf。我错过了什么?

[编辑]正如其中一个答案所建议的那样,我尝试过:

return_value = subprocess.call(['pdflatex', '/Users/Benjamin/Desktop/directory/ON.tex'], shell =False)

失败:

Traceback (most recent call last):
File "/Users/Benjamin/Desktop/directory/generate_tex_files_v3.py", line 285, in -toplevel-
return_value = subprocess.call(['pdflatex', '/Users/Benjamin/Desktop/directory/ON.tex'], shell =False)
File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/subprocess.py", line 413, in call
return Popen(*args, **kwargs).wait()
File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/subprocess.py", line 543, in __init__
errread, errwrite)
File "/Library/Frameworks/Python.framework/Versions/2.4//lib/python2.4/subprocess.py", line 975, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

该文件确实存在,我可以在终端中运行 pdflatex/Users/Benjamin/Desktop/directory/ON.tex。请注意,pdflatex 确实会发出大量警告......但这无关紧要,这也会产生相同的错误:

return_value = subprocess.call(['pdflatex', '-interaction=batchmode', '/Users/Benjamin/Desktop/directory/ON.tex'], shell =False)

最佳答案

使用便捷功能,subprocess.call

您不需要在这里使用Popencall 就足够了。

例如:

>>> import subprocess
>>> return_value = subprocess.call(['pdflatex', 'textfile'], shell=False) # shell should be set to False

如果调用成功,return_value 将设置为 0,否则为 1。

Popen 的使用通常用于需要存储输出的情况。例如,您想使用命令 uname 检查内核版本并将其存储在某个变量中:

>>> process = subprocess.Popen(['uname', '-r'], shell=False, stdout=subprocess.PIPE)
>>> output = process.communicate()[0]
>>> output
'2.6.35-22-generic\n'

同样,永远不要设置 shell=True

关于python - mac 上 python 子进程中的 pdflatex,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4230926/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com