引言

在日常工作中,我们经常需要整理和分析文件夹中的文件结构,特别是当目录层级较深、文件数量较多时,手动记录文件名和路径会非常耗时。Python可以帮助我们自动化这一过程,快速生成文件清单并导出到Excel,方便后续管理或分析。

本文将介绍如何编写一个Python脚本,递归遍历当前文件夹及其子目录,提取所有文件和文件夹的名称、路径、大小、修改时间等信息,并保存到Excel表格中。


1. 为什么需要导出文件夹结构?

  • 文件管理:快速查看所有文件,避免遗漏重要文件。

  • 备份检查:核对文件是否完整,确保备份无误。

  • 数据分析:统计文件类型、大小分布,优化存储空间。

  • 团队协作:共享文件清单,提高协作效率。


2. Python实现:递归遍历文件夹并导出Excel

2.1 安装依赖库

在运行脚本前,确保已安装pandasopenpyxl(用于Excel操作):

bash

复制

  • 01
pip install pandas openpyxl

2.2 完整Python脚本

python

复制

python
  • 01
  • 02
  • 03
  • 04
  • 05
  • 06
  • 07
  • 08
  • 09
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
import os import pandas as pd from datetime import datetime def get_file_list_recursive(directory='.'): """递归获取目录及其子目录下的所有文件和文件夹信息""" file_list = [] for root, dirs, files in os.walk(directory): # 处理当前目录下的文件夹 for dir_name in dirs: full_path = os.path.join(root, dir_name) file_stat = os.stat(full_path) file_list.append({ '文件名': dir_name, '路径': os.path.relpath(full_path, directory), '类型': '文件夹', '大小(MB)': 0, '修改时间': datetime.fromtimestamp(file_stat.st_mtime).strftime('%Y-%m-%d %H:%M:%S') }) # 处理当前目录下的文件 for file_name in files: full_path = os.path.join(root, file_name) file_stat = os.stat(full_path) size_mb = file_stat.st_size / (1024 * 1024) file_list.append({ '文件名': file_name, '路径': os.path.relpath(full_path, directory), '类型': '文件', '大小(MB)': round(size_mb, 2), '修改时间': datetime.fromtimestamp(file_stat.st_mtime).strftime('%Y-%m-%d %H:%M:%S') }) return file_list def save_to_excel(file_list, output_file='file_list_recursive.xlsx'): """将文件列表保存到Excel""" df = pd.DataFrame(file_list) # 按类型和路径排序 df = df.sort_values(by=['类型', '路径'], ascending=[False, True]) # 保存到Excel df.to_excel(output_file, index=False) print(f"共找到 {len(file_list)} 个文件和文件夹,已保存到 {output_file}") if __name__ == '__main__': print("正在递归提取当前文件夹及其子目录下的文件列表...") try: # 获取当前文件夹及其子目录下的文件列表 files = get_file_list_recursive() # 保存到Excel save_to_excel(files) except Exception as e: print(f"发生错误: {e}")

3. 脚本运行效果

运行后,脚本会生成一个file_list_recursive.xlsx文件,包含以下列:

文件名

路径

类型(文件/文件夹)

大小(MB)

修改时间

Documents

Documents

文件夹

0

2024-01-01 10:00:00

report.pdf

Documents/report.pdf

文件

2.5

2024-01-02 12:30:00

images

Pictures/images

文件夹

0

2024-01-03 14:00:00

photo.jpg

Pictures/images/photo.jpg

文件

1.8

2024-01-04 15:30:00


4. 进阶优化

  • 筛选特定文件类型:只导出.pdf.jpg文件。

  • 计算文件夹大小:遍历子文件累加大小(需额外代码)。

  • 导出为CSV/JSON:使用df.to_csv()df.to_json()

  • GUI界面:用tkinterPyQt制作可视化工具。


5. 总结

本文介绍了如何用Python快速导出文件夹结构到Excel,适用于文件管理、数据分析等场景。该脚本具有以下优点:
递归遍历子目录,确保不遗漏任何文件
自动计算文件大小,并转换为MB单位
记录修改时间,方便版本管理
导出为Excel,便于查看和进一步处理

你可以直接复制代码使用,或根据需求进行扩展。希望这个脚本能提高你的工作效率!🚀


📌 你的需求是什么?

  • 是否需要计算文件夹总大小

  • 是否需要按文件类型筛选

  • 是否需要图形化界面

欢迎在评论区交流你的想法!💬