在Python中对文件名列表使用正则表达式
我正在学习Python,想写一些小工具脚本来更熟悉它。我的脚本目的是遍历一个根目录,找到某种扩展名的文件,然后对这些文件运行正则表达式来进行分类。这些文件名都是独一无二的,但有一些共同的部分可以对应到某个类别。
我已经能够遍历根目录并打印出文件(为了测试自己),还把它们添加到一个列表里。
import os, glob, fnmatch
rootdir = '/test/dir/subdir/'
match = []
for path, subdirs, files in os.walk(rootdir):
for file in fnmatch.filter(files, '*.txt'):
match.append(file)
print file
我想对我的match[]列表运行一组正则表达式,如果有匹配的结果,就把这个文件添加到另一个列表中,这个列表可以用作文件的子类别。Python里有没有什么模块或功能可以做到这一点?
大概是这样的:
for file in list:
if file.match(regex):
do_stuff()
谢谢
1 个回答
0
在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,但其实很多时候,解决这些问题的方法是比较简单的。
比如说,当你在写代码的时候,可能会出现一些错误提示。这些提示就像是电脑在告诉你:“嘿,这里有点问题哦!”你需要仔细看看这些提示,通常它们会给你一些线索,帮助你找到问题所在。
另外,很多时候,其他程序员也会遇到类似的问题,所以在网上查找解决方案是个不错的主意。像StackOverflow这样的网站上,有很多人分享了他们的经验和解决方法,你可以从中找到有用的信息。
总之,遇到问题不要慌,仔细阅读错误提示,善用网络资源,通常都能找到解决办法。
import os, glob, fnmatch, re
rootdir = '/test/dir/subdir/'
match, re_match = [], []
for path, subdirs, files in os.walk(rootdir):
for file in fnmatch.filter(files, '*.txt'):
full_path=os.path.join(path, file)
# match.append(file) # don't you want the full path here?
# regexs:
if re.search(regex, file):
# re against the file name alone
...
if re.search(regex, full_path):
# re against the path+file name
...