提高python os.walk正则表达式算法的效率
作者:互联网
我正在使用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
但这必须处理basedir下的所有文件和文件夹,这非常耗时.我正在寻找一种方法来使用与文件相同的正则表达式来过滤掉每个步骤中不需要的目录.或者只匹配部分正则表达式的方法……
例如,在像这样的结构中
/data/2013/07/19/file.dat
使用例如以下正则表达式
/data/(?P<year>2013)/(?P<month>07)/(?P<day>19)/(?P<filename>.*\.dat)
查找所有.dat文件,而无需查看例如/数据/ 2012
解决方法:
例如,如果您只想处理/ data / 2013/07/19中的文件,只需从目录top / data / 2013/07/19启动os.walk().这类似于Tommi Komulainen的建议,但您无需修改循环代码.
标签:python,regex,os-walk 来源: https://codeday.me/bug/20190709/1408951.html