从Python顺序运行命令

2024-10-01 09:15:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图用Python构建一个LaTeX文档,但是在让命令按顺序运行时遇到问题。对于那些熟悉LaTeX的人,你会知道你通常需要运行四个命令,每一个都在运行下一个命令之前完成

pdflatex file
bibtex file
pdflatex file
pdflatex file

因此,在Python中,我这样做是为了定义命令

^{pr2}$

但问题是运行它们。在

我尝试过从this thread中提取内容—例如,在一个循环中使用os.system()subprocess类似map(call, commands)或{}之类的东西,并将列表压缩为一个由&分隔的字符串,但是这些命令似乎都是作为单独的进程运行的,而不需要等待前一个进程的完成。在

坦白说,我使用的是Windows,但我希望有一个跨平台的解决方案。在

编辑
问题是在指定src_文件变量时出现了一个错误;它不应该有一个“.tex”。以下代码现在起作用:

在测试.py在

import subprocess

commands = ['pdflatex','bibtex','pdflatex','pdflatex']

for command in commands:
    subprocess.call((command, 'test'))

在测试.tex在

\documentclass{article}
\usepackage{natbib}

\begin{document}
This is a test \citep{Body2000}.
\bibliographystyle{plainnat}
\bibliography{refs}
\end{document}

在参考围兜在

@book{Body2000,
  author={N.E. Body},
  title={Introductory Widgets},
  publisher={Widgets International},
  year={2000}
}

Tags: test命令进程bibtexwidgetscalldocumentcommand
1条回答
网友
1楼 · 发布于 2024-10-01 09:15:50

os.system不应该引起这种情况,但是subprocess.Popen应该。在

但我认为使用subprocess.call是最好的选择:

commands = ['pdflatex','bibtex','pdflatex','pdflatex']

for command in commands:
    subprocess.call((command, src_file)) 

相关问题 更多 >