2011-02-02 147 views
6

我正在編寫一個Python腳本,它正在幾次使用應用程序pdftk來執行一些操作。Python:無法使用os.system()打開文件

例如,我可以使用PDFTK在Windows命令行shell合併兩個PDF文件是這樣的:

pdftk 1.pdf 2.pdf cat output result.pdf 

我想在我的Python腳本的中間執行上述操作。我試過這樣做:

os.system('pdftk 1.pdf 2.pdf cat output result.pdf') 

以上pdftk命令在Windows shell中完美工作。但是,當我嘗試使用Python的os.system()執行它時,它無法打開輸入文件(1.pdf和2.pdf)。這裏的當試圖執行使用Python的os.system()該命令的錯誤信息,我從PDFTK得到:

Error: Failed to open PDF file: 1.pdf

Error: Failed to open PDF file: 2.pdf

它爲什麼會發生?我該如何解決它?

請注意:我知道有更好的方法來合併PDF文件和Python。我的問題不是關於合併PDF文件。這只是一個玩具的例子。我試圖實現的是使用Python執行pdftk和其他命令行應用程序的能力。

+4

這幾乎肯定是目錄路徑的問題。您可以從`C:\`傳遞完整路徑或無論它在哪裏,或確保您從正確的目錄開始。 – chmullig 2011-02-02 23:15:37

回答

3

可避免使用引號,轉義,等等,與subprocess(潛在的)問題:

import subprocess 

subprocess.call(['pdftk', '1.pdf', '2.pdf', 'cat', 'output', 'result.pdf']) 

這只是一樣容易使用os.system,如果您正在動態構建參數列表,則更容易。

2

您需要設置進程的當前工作目錄。如果.pdf文件位於/some/path/to/pdf/files/

>>> os.getcwd() 
'/home/vz0' 
>>> os.chdir('/some/path/to/pdf/files/')