我正在尝试使用python打开一个指向特定书签的PDF。
到目前为止,我能够在命令提示符中运行以下命令,并得到我想要的内容(最后是PDF test.pdf中指定目的地的名称)
"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /A "nameddest=last" "C:\Users\User\Desktop\test.pdf"
但是,当我使用Python并尝试使用这样的子流程模块时:
import subprocess
subprocess.call(['"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe" /A "nameddest=last" "C:\\Users\\User\Desktop\test.pdf"'], shell=True)
我得到“文件名、目录名或卷标签语法不正确”。之前我尝试过的东西导致Adobe打开,但是给我一个具有相同消息的对话框
为什么当我在python中运行它时会发生什么变化?我怎么才能修好呢?
我在Windows 8上运行Anaconda2.1.0,并使用Acrobat 10创建目的地。我已经和python玩了2-3年了,但是我不知道比一个有一个学期入门编程课的人了解的更多。
发布于 2015-05-17 17:18:45
固定:
我是个笨蛋。
"C:\\Users\\User\Desktop\test.pdf"
是无效路径,因为\test.pdf中的\t被解释为选项卡.它在将其添加到\test.pdf后工作。
稍后,为任何有相同问题的人编写代码:
import os
import subprocess
page = "3"
path_to_pdf = os.path.abspath("C:\\Users\\User\Desktop\\test.pdf")
path_to_acrobat = os.path.abspath('C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe')
process = subprocess.Popen([path_to_acrobat, '/n', '/A', 'page=' + page, path_to_pdf], shell=False, stdout=subprocess.PIPE)
process.wait()
https://stackoverflow.com/questions/30288797
复制相似问题