Python:使用os.system()打开文件失败
我正在编写一个Python脚本,这个脚本会多次使用一个叫做pdftk的应用程序来执行一些操作。
举个例子,我可以在Windows的命令行中用pdftk来合并两个PDF文件,像这样:
pdftk 1.pdf 2.pdf cat output result.pdf
我想在我的Python脚本中间执行上面的操作。以下是我尝试的方法:
os.system('pdftk 1.pdf 2.pdf cat output result.pdf')
在Windows命令行中,上面的pdftk命令运行得很好。但是,当我试图通过Python的os.system()
来执行它时,它却无法打开输入文件(1.pdf和2.pdf)。这是我在用Python的os.system()
执行命令时收到的错误信息:
错误:无法打开PDF文件: 1.pdf
错误:无法打开PDF文件: 2.pdf
为什么会这样呢?我该怎么解决这个问题?
请注意:我知道用Python合并PDF文件有更好的方法。我的问题不是关于合并PDF文件的。这只是一个简单的例子。我真正想要实现的是能够通过Python来执行pdftk和其他命令行应用程序。
3 个回答
0
确保你在同一个当前工作目录下。
我发现使用 \\
而不是 /
对我有帮助。
3
你需要设置当前进程的工作目录。如果你的 .pdf 文件放在 /some/path/to/pdf/files/
这个路径下:
>>> os.getcwd()
'/home/vz0'
>>> os.chdir('/some/path/to/pdf/files/')
3
你可以通过使用 subprocess
来避免一些可能出现的问题,比如引号、转义字符等等:
import subprocess
subprocess.call(['pdftk', '1.pdf', '2.pdf', 'cat', 'output', 'result.pdf'])
它的使用和 os.system
一样简单,如果你是动态生成参数列表的话,使用起来甚至更方便。