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