热点

python遍历文件夹下所有excel文件

字号+ 作者:烟消火灭网 来源:时尚 2026-10-17 09:08:00 我要评论(0)

办公桌上堆着几十个Excel文件,每个都长着相似的面孔。手动逐个打开检查?那是上个世纪的活法。Python的`os.walk()`函数能一口气扫完整个目录树,配合`glob`模块或者`pathlib

办公桌上堆着几十个Excel文件,遍历每个都长着相似的文件l文面孔。手动逐个打开检查?夹下件那是上个世纪的活法。Python的遍历`os.walk()`函数能一口气扫完整个目录树,配合`glob`模块或者`pathlib`,文件l文三五行代码就把所有`.xlsx`文件揪出来。夹下件

先看看最直接的遍历方案:

import os from pathlib import Path target_dir = Path("D:/report") excel_files = list(target_dir.rglob("*.xlsx")) print(f"找到 { len(excel_files)} 个Excel文件") 

这段代码用`rglob`递归搜索,子文件夹里藏得再深的文件l文文件也能翻出来。注意,夹下件`*.xlsx`只匹配新版Excel格式,遍历老旧的文件l文`.xls`文件得单独加个模式。实际业务中经常两种格式混着来,夹下件那就用列表推导式同时抓:

excel_files = list(target_dir.rglob("*.xlsx")) + list(target_dir.rglob("*.xls")) 

拿到文件路径列表只是遍历第一步。真正麻烦的文件l文是文件里藏着什么——有的工作表叫“Sheet1”,有的夹下件叫“数据汇总”,有的干脆用中文名。用`openpyxl`库逐个读取时,得先处理异常。我见过太多同事写的脚本,跑到一半崩溃在某个加密文件上。加个`try-except`,记录失败的文件名,继续处理剩下的,这才是生产环境该有的态度。

import openpyxl from openpyxl import load_workbook for f in excel_files: try: wb = load_workbook(f, data_only=True) for sheet in wb.sheetnames: ws = wb[sheet] # 这里写你的业务逻辑 wb.close() except Exception as e: print(f"跳过 { f.name},原因:{ e}") 

有个细节很多人忽略——`data_only=True`参数。如果不加,读取公式单元格返回的是公式字符串,而不是计算后的值。做数据分析时这能坑死人。还有文件编码问题,CSV文件经常乱码,Excel文件内部用UTF-8,但文件名可能带中文,Windows下路径处理要小心。

实际项目里,我习惯把遍历逻辑封装成生成器,避免一次性加载太多文件路径到内存。假设要处理10万个报表文件,全列表加载会占几百MB内存。生成器逐个产出,配合`pandas`的`read_excel`分块处理,流畅得多。

最后提醒一句:别把所有逻辑堆在一个脚本里。遍历、读取、清洗、分析,拆成函数或类,后面维护的人会感谢你。毕竟三个月后你自己看这堆代码,可能也想不起来当初为什么这么写。

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • web安全测试基础知识

    web安全测试基础知识

    2026-10-17 08:51

  • 河南工业反渗透设备

    河南工业反渗透设备

    2026-10-17 08:47

  • asp采集

    asp采集

    2026-10-17 08:42

  • 台湾购物网站

    台湾购物网站

    2026-10-17 08:37

网友点评