2009-12-02 84 views
4

以下代碼打印一個空行作爲輸出,該行爲false。 問題不在權限中,因爲我測試了帶有pdf文件的777權限的命令。 如何修復命令以提供正確的輸出?Python中的子流程Popen和PIPE

import subprocess 
from subprocess import PIPE, Popen 
output = Popen(['pdftotext', '/home/aal/Desktop/lkn_pdf/appa.pdf'], stdout=PIPE).communicate()[0] 
+1

無關:在Python 2.7+,你可以把它寫爲'輸出= check_output([ 'pdftotext',' /home/aal/Desktop/lkn_pdf/appa.pdf',' - '])'如果您想爲非零退出狀態引發異常。 – jfs

+0

@ J.F.Sebastian我認爲你的評論應該是一個答案。 –

+0

評論是針對來自谷歌的訪問者由於問題標題。但是'check_output'與'.communicate'與你的真正問題沒有任何關係:提供輸出文件名爲'-',以便'pdftotext'寫入管道(它的標準輸出)並且該部分已經被回答。 – jfs

回答

6

pdftotext默認創建一個文件。將結果發送到標準輸出,使用方法:

pdftotext file.pdf - 

或在Python:

output = Popen(['pdftotext', '/home/aal/Desktop/lkn_pdf/appa.pdf', '-'], stdout=PIPE).communicate()[0]