我正在编写一个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()
. 这是使用Python的pdftk执行命令时得到的错误信息。os.system()
:
错误。无法打开PDF文件。 1.pdf
错误。无法打开PDF文件。 2.pdf
为什么会出现这种情况?如何解决这个问题?
请注意:我知道有更好的方法用Python来合并pdf文件。我的问题不是关于合并 pdf 文件。这只是一个玩具例子。我想实现的是用Python执行pdftk和其他命令行应用程序的能力。
你可以避免(潜在的)引号、转义等问题,使用 subprocess
:
import subprocess
subprocess.call(['pdftk', '1.pdf', '2.pdf', 'cat', 'output', 'result.pdf'])
使用起来也很方便,就像 os.system
如果你是动态地建立参数列表,就更容易了。
你需要设置进程的当前工作目录。如果.pdf文件位于 /some/path/to/pdf/files/
:
>>> os.getcwd()
'/home/vz0'
>>> os.chdir('/some/path/to/pdf/files/')
确保你在同一个当前工作目录下。
另外,我发现使用 \\
而不是 /
帮助我。