2011-02-02 502 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/')