悠米是只猫

悠米是只猫

使用Python一键导出文件夹目录结构到Excel - 完整教程

2025-03-26

引言

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

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


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

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

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

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

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


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

2.1 安装依赖库

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

bash

复制

pip install pandas openpyxl

2.2 完整Python脚本

python

复制

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,便于查看和进一步处理

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


📌 你的需求是什么?

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

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

  • 是否需要图形化界面

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