使用posix = false的shlex.split无效(远程搜索文件)

时间:2014-01-15 02:39:12

标签: python posix shlex

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

1 个答案:

答案 0 :(得分:0)

您必须使用posix=True删除转义引号。

对于POSIX和非POSIX之间的区别,请阅读该行或docs以下的内容。

<小时/>

Parsing rules in non-POSIX mode

  
      
  • 引用字符在单词中无法识别(Do"Not"Separate是   解析为单个单词Do"Not"Separate
  •   
  • 无法识别转义字符
  •   
  • 用引号括起字符可保留引号内所有字符的字面值;
  •   
  • 关闭引号单独的字词("Do"Separate被解析为"Do"Separate
  •   
  • 如果whitespace_split为False,则任何未声明为单词字符的字符,空格,   或者报价将作为单字符标记返回。如果是   没错,shlex只会在空格中分割单词
  •   
  • 使用空字符串(''
  • 发出EOF信号   
  • 即使引用,也无法解析空字符串。
  •   

Parsing rules in POSIX mode

  
      
  • 引号被删除,不会分开单词("Do"Not"Separate"被解析为单个单词DoNotSeparate
  •   
  • 未引用的转义字符(例如'\')保留下一个字符的文字值   
  •   
  • 在引号中包含不属于的字符   escapedquotes(例如"'")保留引号
  • 中所有字符的字面值   
  • 在引号中包含字符   escapedquotes(例如'"')保留所有字符的文字值   在引号内,除了提到的字符   逃逸。转义字符仅在保留其特殊含义时才会使用   后跟正在使用的引用或转义字符本身。   否则,转义字符将被视为普通字符。   EOF用无值信号
  • 发出信号   
  • 允许引用空字符串(''
  •