我正在编写一个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和其他命令行应用程序的能力。
答案 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)
确保您在同一当前工作目录中。
我还发现使用\\
而不是/
对我有帮助。