Pythonを使用してLaTeXドキュメントを作成しようとしていますが、コマンドを順番に実行するのに問題があります。 LaTeXに精通している方には、通常は4つのコマンドを実行しなければならないことがわかります。 PythonでPythonから順番にコマンドを実行
pdflatex file
bibtex file
pdflatex file
pdflatex file
、私はこのためのコマンド
commands = ['pdflatex','bibtex','pdflatex','pdflatex']
commands = [(element + ' ' + src_file) for element in commands]
を定義するためにこれをやっているが、問題は、それらを実行しています。
this thread –のようなものを取り除こうとしました。ループ内でos.system()
を使用すると、map(call, commands)
またはPopen
のようなものが&
–で区切られた単一の文字列に折りたたまれていますが、前のコマンドを完了するのを待たずにコマンドがすべて別々のプロセスとして実行されているようです。
私はWindows上ですが、クロスプラットフォームのソリューションが好きです。
EDIT
問題がSRC_FILE変数をspeciyfingのバグでした。それは ".tex"を持つべきではありません。次のコードは動作するようになりました:
@book{Body2000,
author={N.E. Body},
title={Introductory Widgets},
publisher={Widgets International},
year={2000}
}
(http://stackoverflow.com/questions/359347/execute-commands-sequentially- in-python/359506#359506)が動作するはずです[Popen.wait()](http://docs.python.org/library/subprocess.html?highlight=subprocess#subprocess.Popen.wait)を使用してください。 – crashmstr
私は有望だと思ったが正直言って、私は実際にコード例に従っていない。 2つのクラスは、単純なタスクのための多くのコードのようです。 – jkeirstead
[answer from utdemir](http://stackoverflow.com/questions/7365319/run-commands-sequential-from-python/7365350#7365350)は簡単です。呼び出しはPopen(...)とほぼ同じで、返されたオブジェクトに対してwait()を呼び出します。 – crashmstr