python在路径中使用wildchar执行shell命令

python在路径中使用wildchar执行shell命令,python,regex,shell,path,Python,Regex,Shell,Path,如何获得[cc]a.txt和[cc]b.txt匹配?[bb]*中的字符[似乎没有任何意义。使用如下方法: 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'] 也为空将[和]括在[]中 狂欢节: python: test $ ls [cc]a.tx

如何获得
[cc]a.txt
[cc]b.txt
匹配?
[bb]*
中的字符
[
似乎没有任何意义。使用如下方法:

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']

也为空

[
]
括在
[]

狂欢节:

python:

test $ ls
[cc]a.txt test.dat  test.gp   test.py
就全局搜索而言,
[something]
意味着匹配方括号中的任何字符。因此
[cc]*.txt
相当于
c*.txt
,这不是您想要的


当然,更可靠的解决方案是停止使用全局字符命名文件;^)。

[
]
括在
[]

狂欢节:

python:

test $ ls
[cc]a.txt test.dat  test.gp   test.py
就全局搜索而言,
[something]
意味着匹配方括号中的任何字符。因此
[cc]*.txt
相当于
c*.txt
,这不是您想要的


当然,一个更可靠的解决方案是停止使用glob字符命名文件;^)。

不幸的是,您不能简单地转义*,?,[,]字符。协商:

fnmatch.translate的文档,这是最终得到的 打电话,说:没有办法引用元字符。对不起


正如mgilson所解释的那样,解决方案更为复杂。

不幸的是,您不能简单地转义*,?,[,]字符。协商:

fnmatch.translate的文档,这是最终得到的 打电话,说:没有办法引用元字符。对不起


正如mgilson所解释的,解决方案更为复杂。

Nice。感谢您跟踪有关此的文档。(+1)Nice。感谢您跟踪有关此的文档。(+1)如果不使用glob.glob,如何使用其他方法可以使用示例'['匹配?@yanxinyou--我不太清楚你在问什么。如果你在寻找不同的选项,你可以使用
os.listdir
并根据手动正则表达式过滤结果……谢谢。我想使用[somethins]*匹配一些文件。然后移动它。我使用[[]替换[],和[]]移动]。很好。如果不使用glob.glob。如何使用其他方法可以使用“[”进行匹配?@yanxinyou--我不太确定你在问什么。如果你在寻找不同的选项,你可以使用
os.listdir
并基于手动正则表达式过滤结果……谢谢。我想使用[somethins]*匹配一些文件。然后移动它。我使用[[]替换[,和[]]到],效果很好。
>>> glob.glob(r'[[]cc[]]*.txt') #yuck ...
['[cc]a.txt']