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之间的区别,请在行下或从文档中阅读。
在非POSIX模式下解析规则
- 单词中无法识别引号字符(
Do"Not"Separate
为解析为单个单词Do"Not"Separate
)- 无法识别转义符
- 将字符括在引号中可保留引号中所有字符的文字值
- 结束语引独立单词(
"Do"Separate
解析为"Do"
和Separate
)- 如果whitespace_split为False,则任何未声明为单词字符的字符、空白、,或者一个引号将作为单字符标记返回。如果是没错,shlex只会在空白处拆分单词
- EOF用一个空字符串(
''
)发出信号- 即使被引用,也不可能解析空字符串
在POSIX模式下解析规则
- 引号被剥离,并且不分离单词(
"Do"Not"Separate"
被解析为单个单词DoNotSeparate
)- 无引号转义符(例如
''
)保留下一个字符的文字值接下来- 将不属于的字符括在引号中转义引号(例如
"'"
)保留引号中所有字符的文字值- 将字符括在作为转义引号(例如
'"'
)保留所有字符的文字值在引号中,中提到的字符除外逃跑转义符只有在后面跟着使用中的引号或转义符本身。否则,转义符将被视为正常字符。EOF用None值发出信号- 允许使用带引号的空字符串(
''
)