2013-12-08 21 views
2

在“”引号中包含完整的文件路径不会使其工作。Python,子进程,文件路径空格和着名的'C:/ Program'不被识别为内部或外部命令

CMD = “C:\ Program Files文件(x86)的\的iTunes \ iTunes.exe”

subprocess.popen抛出不能够找到一个可执行文件,如果有一个空白的错误在要执行的文件路径中。

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

+1

您确定问题出在白色空间而不是反斜杠上吗?尝试'cmd =“C:\\ Program Files(x86)\\ iTunes \\ iTunes.exe”'。 –

回答

2

在反斜杠触发字符串转义字符。由于Windows完全支持使用正斜杠作为路径分隔符,仅仅做到这一点:

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

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

+0

Windows不支持。 : –

+0

那么,即使使用shell = False,Popen总是使用shell(或者其他等价物)来打开Windows上的外部程序?在这种情况下,修复程序是容易:只需添加引号。''cmd ='“C:/ Program Files(x86)/iTunes/iTunes.exe”'''' –

+0

如果没有Windows机器到手,我不愿意在没有测试的情况下提出这个建议,因为它支持正斜杠的Windows for Python文件路径而不是窗口,我怀疑嵌套引号可能会打败这个。 –

0

试图逃跑的C​​MD线:更换

"\" 

通过

"\\" 

而且

' ' 

(空格)

'\ ' 

(反斜杠+空格)。

1

要么使用:

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

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

cmd ='“C:\\ Program Files(x86)\\ iTunes \\ iTunes.exe”'将不起作用。 – alphanumeric

+0

我不知道关于R”“C:\\ Program Files文件\\ executable.exe'? – alphanumeric

+0

@Sputnix 1)第一个将无法正常工作或不工作2),所以尝试 –

0

文件路径:

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

那么你应该:

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

那么它的作品,我Main.py为显示打击:

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' 
相关问题