以下代码通过os.walk结合正则表达式收集目标文件的绝对路径。
file_scanner函数将返回一个迭代器,迭代器存放的是目标路径中所有符合正则表达式规则的文件名的绝对路径。有了文件路径就方便对文件进行其他操作了。
import os,re
def file_scanner(scanner_path,regex):
file_collect = [] #用于存放匹配到的目标文件的完成路径
for root,fold,files in (os.walk(scanner_path)): #通过OS.walk来递归查找目标路径文件
while len(files): #利用while循环判断当前目录是否存在文件
content = files.pop() #如果存在文件则依次弹出文件名
if re.match(regex,content,re.I): #判断文件名是否符合正则表达式规则,不区分大小写
file_collect.append(os.path.join(root,content)) #如果该文件符合正则表达式规则,则命中,并组合成绝对路径,并记录在列表中
path_collect = iter(file_collect) #将记录文件路径的列表,转换为迭代器,提高性能
return (path_collect) #函数执行完毕后,将返回上述迭代器,用作他用
if __name__ == '__main__': #函数执行开始的地方
#############################################
# 上面内容不要修改 #
#############################################
scanner_path = r"c:\Test" #指定需要扫描的文件夹,根据自己需求修改
regex = r"index.xls" #指定需要匹配文件的正则表达式regex对象,根据自己需求修改,此处匹配文件名为index.xls的文件,文件名不区分大小写
#############################################
# 以下面内容不要修改 #
#############################################
file_scanner(scanner_path,regex) #调用函数