Python:无法使用os.system()打开文件

时间:2011-02-02 23:12:05

标签: python system cmd

我正在编写一个Python脚本,它使用应用程序pdftk几次来执行某些操作。

例如,我可以在windows命令行shell中使用pdftk来合并两个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获得的错误消息:

  

错误:无法打开PDF文件:      次数1.pdf

     

错误:无法打开PDF文件:      2.pdf

为什么会这样?我该如何解决?

请注意:我知道有更好的方法将pdf文件与Python合并。我的问题不是关于合并pdf文件。那只是一个玩具的例子。我想要实现的是使用Python执行pdftk和其他命令行应用程序的能力。

3 个答案:

答案 0 :(得分:3)

您可以使用subprocess避免(潜在)引用,转义等问题:

import subprocess

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

它与os.system一样易于使用,如果您动态构建参数列表,则更容易。

答案 1 :(得分:2)

您需要设置流程的当前工作目录。如果.pdf文件位于/some/path/to/pdf/files/

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

答案 2 :(得分:0)

确保您在同一当前工作目录中。

我还发现使用\\而不是/对我有帮助。