2011-08-15 23 views
0

我想在我的Python腳本中實現一個函數來自動編譯一個TeX文件。我正在嘗試與subprocess module;這是我在做什麼:爲什麼pdflatex在作爲Python子進程調用時不工作?

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

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

當我運行pdflatex與終端的TeX我的文件,它編譯罰款。但是當我運行我的Python腳本時,它不能編譯。這似乎是編譯過程開始,但幾分鐘後,它沒有任何理由停止。我查看了日誌文件,並沒有打印任何錯誤消息。

回答

1

當您將輸出管道設置爲subprocess.PIPE時,子流程會創建一個緩衝區來保存子流程的輸出,直到流程被您的流程讀取。如果您從未讀過process.stdoutprocess.stderr,pdflatex可以填充緩衝區和塊。

您需要discard their output或只需撥打subprocess.call(args)並讓它們流過程序的輸出。

+0

謝謝傑里米...我在另一個頁面閱讀,我需要這些PIPE但我刪除它們後,一切工作完美....非常感謝! :) – Alejandro

相關問題