我正在尝试使用subprocess.Popen()
在远程计算机上执行 Python 脚本。这在大多数情况下都可以,但如果 Python 的路径包含空格,则会失败。用双引号包围路径无济于事,无论我如何逃避它们 -winrs
似乎用它们逃避它们\"
并且路径在遥控器上没有正确解释。
这会产生类似的错误'\'\\"C:\\progam files\\py\\python.exe\\"\' is not recognized as an internal or external command, operable program or batch file'
。
我已经尝试了所有Popen
我能想到的标志组合,尝试用^
, \
, "
,转义引号,`
但无济于事。
非常感谢任何帮助。编码:
#lots of variations of this, all fail...
cmd = '"C:\\my py\\python.exe" --version'
def _winrs_spaces(cmd,host,user,pw,port=8080):
winrs = 'winrs'
args = [winrs,
'-nop',
'-r:http://%s:%s' % (host, port),
'-u:%s\\%s' % (host,user),
'-p:%s' % pw,
cmd]
proc = subprocess.Popen(args,stdout=subprocess.PIPE, stderr=subprocess.PIPE,shell=True)
stdoutData,stderrData = proc.communicate()
ret = proc.returncode
if stdoutData:
print(stdoutData)
if stderrData:
print(stderrData)
if ret:
raise IOError('_spaces failed')
return stdoutData