subprocess.call在带空格的路径上

时间:2017-12-14 10:20:49

标签: python

包含文件的字符串在控制台中如下所示:

>>> target_file
'src//data//annual_filings//ABB Ltd//ABB_ar_2015.pdf'

我通过致电target_file获得了os.walk 目标是构建一个在subprocess.call中运行的命令 类似的东西:

from subprocess import call

cmd_ = r'qpdf-7.0.0/bin/qpdf --password=%s --decrypt %s %s' %('', target_file, target_file)
call([cmd_])

我尝试了不同的变体,将shell设置为TrueFalse。 用///等替换\。 问题似乎与文件夹中的空间有关(我无法更改文件夹名称)。

python代码需要在 Windows

上运行

1 个答案:

答案 0 :(得分:1)

你必须将cmd_定义为参数列表而不是列出唯一字符串的列表,或者subprocess将字符串解释为命令(甚至不尝试拆分args) :

cmd_ = ['qpdf-7.0.0/bin/qpdf','--password=%s'%'','--decrypt',target_file, target_file]
call(cmd_)

并将引文留给subprocess

作为旁注,不需要加倍斜杠。它有效,但这是不必要的。