import osfrom openpyxl import Workbookdef get_folder_tree(folder_path): """ 遍历文件夹,生成树状结构的文件列表 :param folder_path: 目标文件夹路径 :return: 树状结构的文件信息列表,每个元素是[层级展示, 文件名, 完整路径] """ # 存储最终的树状数据 tree_data = [] # 遍历文件夹:root是当前目录,dirs是当前目录下的子文件夹,files是当前目录下的文件 for root, dirs, files in os.walk(folder_path): # 计算当前路径相对于根目录的层级(根目录层级为0) level = root.replace(folder_path, '').count(os.sep) # 生成层级缩进符(第一层不用缩进,第二层开始加│ ,最后一层加├─) indent = '│ ' * (level - 1) if level > 0 else '' # 处理文件夹名称 folder_name = os.path.basename(root) if level == 0: # 根目录本身 tree_data.append([folder_name, '【文件夹】', root]) else: # 子文件夹 tree_data.append([f'{indent}├─ {folder_name}', '【文件夹】', root]) # 处理当前文件夹下的文件 file_indent = '│ ' * level for file in files: file_path = os.path.join(root, file) tree_data.append([f'{file_indent}├─ {file}', '【文件】', file_path]) return tree_datadef write_to_excel(tree_data, excel_path): """ 将树状数据写入Excel :param tree_data: 树状结构数据 :param excel_path: 输出Excel的路径(如:D:/文件列表.xlsx) """ # 创建新的Excel工作簿 wb = Workbook() # 获取默认工作表 ws = wb.active # 设置表头 ws.append(['树状结构', '类型', '完整路径']) # 写入数据 for row in tree_data: ws.append(row) # 调整列宽(让内容显示完整) ws.column_dimensions['A'].width = 60 # 树状结构列宽 ws.column_dimensions['B'].width = 10 # 类型列宽 ws.column_dimensions['C'].width = 80 # 完整路径列宽 # 保存Excel wb.save(excel_path) print(f'✅ Excel已生成:{excel_path}')if __name__ == '__main__': # -------------------------- 请修改这里的路径 -------------------------- # 目标文件夹路径(替换成你要读取的文件夹,路径用/或\\都可以) target_folder = r'D:\厨房资料' # 输出Excel的路径(替换成你想保存的位置和文件名) output_excel = r'D:\厨房文件列表.xlsx' # --------------------------------------------------------------------- # 检查目标文件夹是否存在 if not os.path.exists(target_folder): print(f'❌ 错误:文件夹 {target_folder} 不存在,请检查路径!') else: # 获取树状结构数据 tree_data = get_folder_tree(target_folder) # 写入Excel write_to_excel(tree_data, output_excel)