プログラム名と引数で'"'と他のすべてのワイルド文字をエスケープしたいので、それらを二重引用符で囲んでみます。これはcmd.exeで実行できます。
C:\bay\test\go>"test.py" "a" "b" "c"
hello
['C:\\bay\\test\\go\\test.py', 'a', 'b', 'c']
しかし、os.sytemを使用した次のコードの何が問題になっていますか?
cmd = '"test.py" "a" "b" "c"'
print cmd
os.system(cmd)
その出力:
C:\bay\test\go>test2.py
"test.py" "a" "b" "c"
'test.py" "a" "b" "c' is not recognized as an internal or external command,
operable program or batch file.
文字列全体'"test.py""a" "b" "c"'が単一のコマンドとして認識されるのはなぜですか?しかし、次の例はそうではありません。
cmd = 'test.py a b c'
print cmd
os.system(cmd)
C:\bay\test\go>test2.py
test.py a b c
hello
['C:\\bay\\test\\go\\test.py', 'a', 'b', 'c']
ありがとう!