Python,子进程,文件路径空格和着名的“C:/ Program”不被识别为内部或外部命令

时间:2013-12-08 17:10:59

标签: python subprocess popen

在“”引号中包含完整的文件路径并不能使其正常工作。

cmd =“C:\ Program Files(x86)\ iTunes \ iTunes.exe”

如果要执行的文件路径中有空格,

subprocess.popen 会抛出无法找到可执行文件的错误。

前段时间我找到了一个解决方案,其中涉及使用一些奇怪的符号或它们的组合...不幸的是我找不到那个例子的代码。如果有人能指出我正确的方向,我将不胜感激。提前致谢。

4 个答案:

答案 0 :(得分:2)

字符串中的反斜杠会触发转义字符。由于Windows完全支持使用正斜杠作为路径分隔符,所以只需执行以下操作:

cmd = "C:/Program Files (x86)/iTunes/iTunes.exe"

无需摆弄\\或原始字符串。 ;)

答案 1 :(得分:1)

使用:

cmd = '"C:\\Program Files (x86)\\iTunes\\iTunes.exe"'

cmd = r'"C:\Program Files (x86)\iTunesr\iTunes.exe"'

答案 2 :(得分:0)

尝试逃离您的cmd行:替换

"\" 

通过

"\\"

并且

' ' 

(空格)

'\ ' 

(反斜杠+空格)。

答案 3 :(得分:0)

文件路径:

file_path= 'E:\\te st.py'

然后你应该:

file_path = '"E:\\te st.py"'

然后它起作用,我的Main.py作为show blow:

import subprocess

doc = '"E:\\te st.py"'

p = subprocess.Popen ('python ' + doc , stdout=subprocess.PIPE,
                             stderr=subprocess.PIPE)
output = p.communicate()
print output

和te st.py是:

print 'hello world'