我正在使用os.walk来从特定文件夹中选择与正则表达式匹配的文件。
for dirpath, dirs, files in os.walk(str(basedir)):
files[:] = [f for f in files if re.match(regex, os.path.join(dirpath, f))]
print dirpath, dirs, files
但是这需要处理基础目录下的所有文件和文件夹,这需要花费很长时间。我正在寻找一种方法,在每个步骤中使用与文件相同的正则表达式来过滤掉不需要的目录。或者只匹配正则表达式的一部分...
例如,在以下结构中:
/data/2013/07/19/file.dat
使用以下正则表达式:
/data/(?P<year>2013)/(?P<month>07)/(?P<day>19)/(?P<filename>.*\.dat)
查找所有 .dat 文件,无需查看例如 /data/2012 等文件夹中的内容。
glob
,例如for filename in glob.iglob('/data/2013/07/19/*.dat'):
,但是我不确定问题是什么。 - Tommi Komulainen