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\)*
我正在浏览一个目录,并尝试使用 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\)*