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
答案 0 :(得分:0)
您必须使用posix=True
删除转义引号。
对于POSIX和非POSIX之间的区别,请阅读该行或docs以下的内容。
<小时/>
- 引用字符在单词中无法识别(
Do"Not"Separate
是 解析为单个单词Do"Not"Separate
)- 无法识别转义字符
- 用引号括起字符可保留引号内所有字符的字面值;
- 关闭引号单独的字词(
"Do"Separate
被解析为"Do"
和Separate
)- 如果whitespace_split为False,则任何未声明为单词字符的字符,空格, 或者报价将作为单字符标记返回。如果是 没错,shlex只会在空格中分割单词
- 使用空字符串(
发出EOF信号''
)- 即使引用,也无法解析空字符串。
- 引号被删除,不会分开单词(
"Do"Not"Separate"
被解析为单个单词DoNotSeparate
)- 未引用的转义字符(例如
'\'
)保留下一个字符的文字值- 在引号中包含不属于的字符 escapedquotes(例如
中所有字符的字面值"'"
)保留引号- 在引号中包含字符 escapedquotes(例如
发出信号'"'
)保留所有字符的文字值 在引号内,除了提到的字符 逃逸。转义字符仅在保留其特殊含义时才会使用 后跟正在使用的引用或转义字符本身。 否则,转义字符将被视为普通字符。 EOF用无值信号- 允许引用空字符串(
''
)