Python fnmatch 带括号和逗号

Python fnmatch with parentheses and commas

我正在浏览一个目录,并尝试使用 fnmatch.fnmatch(filename,'*(0, 0, 0)*') 收集包含字符串 (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

我的理解是转义圆括号应该可以解决这个问题,但运气不好。解决此问题的最佳方法是什么?

files_list=[]

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

你还需要转义空格。

试试这个:*\(0,\ 0,\ 0\)*