带有括号和逗号的Python fnmatch

时间:2018-08-22 21:01:39

标签: python glob

我正在遍历目录,并尝试使用(0, 0, 0)收集包含字符串fnmatch.fnmatch(filename,'*(0, 0, 0)*')的文件。似乎括号和逗号已将其删除,并与(0, 1, 1)之类的字符串匹配,我不希望这样。

相关代码段为:

for root, dirs, files in os.walk(data_dir):
    for file in files:
        filename = os.path.join(root, file)
        if fnmatch.fnmatch(filename,'*\(0, 0, 0\)*'):
            # do stuff

并且目录包含以下文件:

\c_(0, 0, 0)\data.txt
\c_(0, 05, 05)\data.txt
\c_(0, 05, 1)\data.txt
\c_(0, 1, 0)\data.txt

我的理解是,转义括号可以解决该问题,但是在那里没有运气。解决此问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

files_list=[]

for filename in os.listdir(r'DirPath'):
    if filename.count('(0, 0, 0)'):
        files_list.append(filename)

答案 1 :(得分:0)

您还需要转义空格。

尝试:*\(0,\ 0,\ 0\)*