Python:使用os.system()打开文件失败

6 投票
3 回答
6680 浏览
提问于 2025-04-16 11:07

我正在编写一个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 一样简单,如果你是动态生成参数列表的话,使用起来甚至更方便。

撰写回答