2010-10-09 70 views
0

我正在linux中編寫一個python程序,並在其中運行pdftotext可執行文件以轉換pdf文本。我目前使用的代碼如下。在python中使用subprocess.popen與os.tmp文件同時傳入可選參數

pdfData = currentPDF.read() 

tf = os.tmpfile() 
tf.write(pdfData) 
tf.seek(0) 

out, err = subprocess.Popen(["pdftotext", "-", "-"], stdin = tf, stdout=subprocess.PIPE).communicate() 

這工作正常,但現在我想運行帶-layout選項(保留文檔佈局)的pdftotext可執行文件。我嘗試用佈局替換「 - 」,用「pdftotext -layout」替換「pdftotext」等。它們都不起作用。他們都給我一個空的文字。由於輸入是通過臨時文件輸入的,因此我很難計算出參數列表。 Popen上的大多數文檔都假定所有參數都通過參數列表傳入,但在我的情況下,輸入是通過臨時文件傳入的。

任何幫助將不勝感激。

回答

2

這個工作對我來說:

out, err = subprocess.Popen(
    ["pdftotext", '-layout', "-", "-"], stdin = tf, stdout=subprocess.PIPE).communicate() 

雖然我找不到手冊頁明確的確認,我相信第一個-告訴pdftotext預計PDF-file來自標準輸入,第二個-告訴pdftotext預計text-file發送到標準輸出。

0

您可以在字符串殼通過完整的命令= TRUE:

out, err = subprocess.Popen('pdftotext -layout - -', shell=True, stdin=tf, stdout=subprocess.PIPE).communicate() 
+0

不起作用。我得到一個錯誤「TypeError:'Popen'對象不可迭代」 – Chaitanya 2010-10-10 05:22:42

相關問題