You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简化遍历多层文件夹检测Excel文件null值的Python代码

Excel多层目录空值批量检测简化代码

原代码问题梳理

  • 仅支持遍历两层子目录,深层子文件夹下的Excel文件会漏检
  • 相同逻辑重复编写,代码冗余度高
  • 路径拼接用硬编码反斜杠,不支持跨系统运行,还存在变量引用错误(深层文件输出时路径变量错用上层变量)
  • logging配置重复放在循环内,属于无效重复调用
  • 存在无用导入(拼写错误的uuidtre、未使用的numpy库)

简化后可直接运行的代码

import pandas as pd
import logging
from pathlib import Path

# 日志配置仅执行一次
logging.basicConfig(filename='nanTest.log', level=logging.INFO, format='%(message)s')
# 检测根目录配置
ROOT_PATH = r"C:\Users\Documents\python\Emp"

def check_excel_null(excel_path: Path):
    """检测单个Excel文件空值并写入日志"""
    try:
        df = pd.read_excel(excel_path, engine='openpyxl')
    except Exception as e:
        logging.info(f"文件名: {excel_path.name}, 文件路径: {excel_path.absolute()}, 读取失败:{str(e)}")
        return
    nan_count = df.isnull().sum().sum()
    tip = "文件中无空值" if nan_count == 0 else f"文件中检测到{nan_count}个空值"
    logging.info(f"文件名: {excel_path.name}, 文件路径: {excel_path.absolute()}, {tip}")

if __name__ == '__main__':
    # 递归遍历所有层级目录下的xlsx文件
    for excel_file in Path(ROOT_PATH).rglob("*.xlsx"):
        check_excel_null(excel_file)

优化说明

  • 用pathlib库的rglob方法递归遍历所有层级子目录,不管嵌套多少层都能完整匹配所有xlsx文件,无需手动编写多层循环逻辑
  • 把重复的Excel读取、空值检测、日志输出逻辑封装为独立函数,代码可维护性大幅提升
  • 新增异常捕获逻辑,遇到损坏、加密的Excel文件不会直接中断整个检测流程,会自动记录失败原因
  • 修正原代码的所有bug,路径适配Windows/macOS/Linux系统,日志输出内容清晰准确

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 05:57:05