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

使用Python跳过Excel工作簿中空工作表的实现问题

问题原因

  • Python不允许数字开头的变量名,你定义的24avrg会直接触发语法错误,被裸except捕获后直接跳过,这是无输出的核心原因之一
  • 你当前使用的裸except会捕获所有类型的异常,包括非空工作表读取后出现的"Time"列不存在、计算逻辑错误等问题,所有异常都直接跳过,自然不会返回结果
  • 计算得到的结果没有存储到循环外的容器中,循环结束后变量会被覆盖,无法拿到最终输出
  • 没有显式判断工作表是否为空,空表读取后执行后续索引、计算逻辑也会触发异常被跳过

解决方案

你可以选择「跳过空工作表」或者「空工作表返回0值」两种处理逻辑,参考代码如下:

# 初始化字典存储每个工作表的计算结果
result = {}

for sheet in sheet_names:
    try:
        # 读取当前工作表
        traffic_data = pd.read_excel(file_path, sheet_name=sheet)
        # 显式判断是否为空工作表
        if traffic_data.empty:
            # 方案1:空表直接跳过,不需要空表记录就启用这行,注释下方赋值逻辑
            # continue
            # 方案2:空表返回0值,不需要就注释这行启用上面的continue
            result[sheet] = 0
            continue
        # 非空表执行后续计算
        traffic_data2 = traffic_data[traffic_data["Time"] == "00-24"]
        avrg_24 = traffic_data2 / 24
        # 存储当前工作表的计算结果
        result[sheet] = avrg_24
    # 只捕获读取Excel相关的异常,不要吞掉计算逻辑的错误方便排查问题
    except (ValueError, IOError) as e:
        # 读取失败的表也按空表处理,存0或者跳过都可以
        result[sheet] = 0
        pass

结果调用

计算完成后你可以直接从result字典中取对应工作表的结果:

  • 非空工作表返回对应的计算DataFrame
  • 空/读取失败的工作表返回0值
    如果选了跳过空表的逻辑,最终result里只会保留有效工作表的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:09:03