如何快速汇总文件夹下所有文件的名称、类型、大小等信息?
当你在整理U盘、年度文件夹、项目文件夹时,面对众多的文件夹及众多的文件,手动逐个记录不仅效率低下、还容易遗漏、出错。今天分享一个轻量又实用的Python代码,仅需25行,就能自动遍历指定文件下所有层级的文件,批量提取文件名称、大小、路径等关键信息,还能生成带超链接的Excel清单,鼠标点击就可直接打开文件,办公效率直接拉满!下面是完整的可执行代码,只需修改文件夹路径即可使用。from pathlib import Pathfrom openpyxl import Workbookimport times_t = time.time()folder_dir = r"D:\2025"file_list = []for file in Path(folder_dir).rglob("*"): if file.is_file(): #判断是否为文件 file_list.append([file.stem, #文件名 file.suffix.upper().lstrip("."), #文件大写后缀名 round(file.stat().st_size/1024,2), #文件大小,KB str(file)]) #完整地址wb = Workbook()ws = wb.activews.append(["序号","文件名称","文件类型","文件大小","文件地址"])for i,(name,ext,size,path) in enumerate(file_list,1): ws.append([i,name,ext,size,f'=HYPERLINK("{path}","{path}")'])file_new = Path(r"d:\文件名称提取.xlsx")if file_new.exists(): file_new.unlink()wb.save(file_new)print(f"共找到{ws.max_row-1}文件,用时{time.time()-s_t:.3f}秒")
代码解读
1、所需要的模块
from pathlib import Pathfrom openpyxl import Workbookimport time
openpyxl库是用来操作Excel文件的,主要是数据的写入、文档的保存。pathlib库是用来操作文件路径的,包括文件夹和文件。2、文件夹遍历和文件信息的提取
folder_dir = r"D:\2025"file_list = []for file in Path(folder_dir).rglob("*"): if file.is_file(): #判断是否为文件 file_list.append([file.stem, #文件名 file.suffix.upper().lstrip("."), #文件大写后缀名 round(file.stat().st_size/1024,2), #文件大小,KB str(file)]) #完整地址
第3行的Path(folder_dir).rglob("*")能够递归遍历目标文件夹下所有层级的文件夹和文件。第4行if file.is_file():用于判断当前对象是否为文件,目的是过滤掉文件夹,只保留文件对象。第5行file.stem可以获取当前路径无后缀名纯文件名。第6行file.suffix.upper().lstrip(".")获取当前路径的后缀名转为大写并去除开头的“.”。第7行round(file.stat().st_size/1024,2)中的file.stat().st_size可获取当前文件的文件大小,单位为B。除以1024后转换为KB,并保留2位小数。第8行str(file)将文件的完整路径转换为字符串,为后续生成超链接做准备。3、新建Excel表格与数据写入
wb = Workbook()ws = wb.activews.append(["序号","文件名称","文件类型","文件大小","文件地址"])for i,(name,ext,size,path) in enumerate(file_list,1): ws.append([i,name,ext,size,f'=HYPERLINK("{path}","{path}")'])
第1行Workbook()创建一个新的Excel工作簿对象。第2行wb.active获取当前激活的工作表,用于写入数据。第3行ws.append()向工作表中写入数据,这里写入的是表头。第4行for i,(name,ext,size,path) in enumerate(file_list,1)使用enumerate()方法遍历文件信息列表。i从1开始。name,ext,size,path为当前文件的文件名、后缀名、大小和完整路径。第5行f'=HYPERLINK("{path}","{path}")']是插入超链接。HYPERLINK是Excel内置函数,接收两个参数,第一个是目标路径,第二个是显示的文本。生成后的Excel单元格自带超链接,点击即可直接打开对应的文件。4、保存文档
file_new = Path(r"d:\文件名称提取.xlsx")if file_new.exists(): file_new.unlink()wb.save(file_new)print(f"共找到{ws.max_row-1}文件,用时{time.time()-s_t:.3f}秒")
第2行if file_new.exists()是判断当前路径是否存在。如果存在则执行下面的语句。第3行file_new.unlink()删除文件,避免被已存在文件的干扰。第4行wb.save(file_new)将工作簿对象保存为Excel到本地。第5行显示运行的结果及时长。经测试,在处理包含5466个文件的目录,仅需1.3秒。如果还需要文件的创建时间、修改时间等信息,可通过stat().st_ctime、stat().st_mtime等来获取。如果你也经常需要整理文件夹文件,不妨试试这段代码吧。如果这篇文章对你有所启发,别忘了点赞+转发给身边的朋友~~~