ls
[cc]a.txt bba.txt [cc]b.txt bbb.txt
ipython
glob.glob("[cc]*")
[]
glob.glob("bb*")
['bba.txt','bbb.txt']
glob.glob("[bb]*")
['bba.txt','bbb.txt']
如何让 [cc]a.txt 和 [cc]b.txt 匹配? [bb]* 中的字符[ 似乎没有意义。像这样使用:
glob.glob("\[cc\]*")
[]
也为NULL
请您参考如下方法:
将 [ 和 ] 包含在 [] 中。
狂欢:
test $ ls
[cc]a.txt test.dat test.gp test.py
python :
>>> glob.glob(r'[[]cc[]]*.txt') #yuck ...
['[cc]a.txt']
就通配而言,[ something] 表示匹配方括号之间的任何字符。所以 [cc]*.txt 等同于 c*.txt 这不是你想要的。
当然,更稳健的解决方案是停止使用 glob 字符命名文件 ;^)。
