gap = "dir c:\\PROGRA~2\\td\\conf\\ga.db3"
print gap
cmd = shlex.split('cmd "/c ' + gap+'"', posix=False)
print cmd
o = subprocess.call(cmd)
print o
上面的脚本我在 Windows 上运行,它根本不起作用。我只想远程搜索文件“ga.db3”是否存在。请告诉我。
The output is: File Not Found
您必须使用posix=True
来删除转义的引号。
有关 POSIX 和非 POSIX 之间的区别,请阅读行下方或从docs中读取。
- 单词中无法识别引号字符(
Do"Not"Separate
被解析为单个单词Do"Not"Separate
)- 无法识别转义字符
- 用引号括起来的字符保留引号内所有字符的字面值;
- 右引号分隔单词(
"Do"Separate
被解析为"Do"
andSeparate
)- 如果 whitespace_split 为 False,则任何未声明为单词字符、空格或引号的字符都将作为单字符标记返回。如果为 True,则 shlex 只会在空格中分割单词
- EOF 用空字符串 (
''
)发出信号- 即使被引用,也无法解析空字符串。
- 引号被剥离,并且不分隔单词(
"Do"Not"Separate"
被解析为单个单词DoNotSeparate
)- 不带引号的转义字符(例如
'\'
)保留下一个字符的字面值- 将不属于转义引号一部分的字符括在引号中(例如
"'"
)保留引号内所有字符的文字值- 将字符括在引号中,这些字符是转义引号的一部分(例如,
'"'
)保留引号内所有字符的字面值,但转义中提到的字符除外。转义字符仅在使用中的引号或转义字符本身时才保留其特殊含义。否则转义字符将被视为普通字符。EOF 用 None 值发出信号''
允许带引号的空字符串 ( )