Python windows操作系统中的双引号转义

Python windows操作系统中的双引号转义,python,windows,batch-file,double-quotes,Python,Windows,Batch File,Double Quotes,我想在程序名和参数中转义“.”和所有其他通配符,所以我尝试双引号引用它们。我可以在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>t

我想在程序名和参数中转义“.”和所有其他通配符,所以我尝试双引号引用它们。我可以在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']
谢谢!

尝试操作系统('python“test.py”“a”“b”“c')

您也可以使用子流程模块来实现这种目的

请看一看


更新:当我这样做时,
os.system(“'test.py”“a”“b”“c')
,我得到了类似的错误,但不是在
os.system('test.py”“a”“b”“c')
,所以,我想假设第一个参数不应该被双引号引用

实际上,它只是按照设计工作。 您不能像那样使用os.system。请参见以下内容:

谷歌的更多信息来自此页面


cmd='“test.py”a“b”c“确实有效!

将参数括在括号中,就可以了

CMD /k ("c:\batch files\test.cmd" "Parameter 1 with space" "Parameter2 with space")

是的,它是用完整的Python路径工作的。但是如果程序不是Python脚本怎么办?为什么当所有的部分都用双引号包装时,它会把它们看成一个完整的字符串?还是不明白。@约翰尼斯·R·瑟塞尔,我在我的窗口中实际测试过,我能知道你得到了什么样的错误吗?@陈兹,请看一下这个线程,Sorry S.Mark。我没有。我只是从一个事实推断出来,显然
system()
将整个字符串作为其命令,并尝试运行它,但我在阅读文档时无法确认。我应该更早地删除它。如果正确转义,子流程可以完成某种类型的此项工作,但我想知道os.system有什么问题?这是正确的答案。这解决了我的问题;谢谢。
CMD /k ("c:\batch files\test.cmd" "Parameter 1 with space" "Parameter2 with space")