2011-08-15 14 views
0

私はTeXファイルを自動的にコンパイルするPythonスクリプトに関数を実装しようとしています。私はsubprocess moduleで試しています。Pythonサブプロセスとして呼び出されたときにpdflatexが動作しないのはなぜですか?

def createpdf(output): 
    args = ['pdflatex', output, '-interaction=nonstopmode'] 

    process = subprocess.call(args, 
        stdout = subprocess.PIPE, 
        stderr = subprocess.PIPE, 
        stdin = subprocess.PIPE) 

端末でTeXファイルを使用してpdflatexを実行すると、コンパイルが正常に行われます。しかし、私がPythonスクリプトを実行すると、コンパイルされません。コンパイルプロセスが始まるようですが、数分後に何の理由もなく停止します。ログファイルを調べても、エラーメッセージは表示されません。

答えて

1

出力パイプをsubprocess.PIPEに設定すると、サブプロセスはプロセスによって読み取られるまでサブプロセスの出力を保持するバッファを作成します。 process.stdoutprocess.stderrから決して読むことができない場合、pdflatexはバッファをいっぱいにしてブロックします。

discard their outputのいずれかを入力するか、subprocess.call(args)を呼び出して、プログラムの出力に流す必要があります。

+0

ありがとうございました...私はそれらのパイプが必要な別のページを読みましたが、私はそれらを削除した後、すべてが完璧に動作します。 :) – Alejandro

関連する問題