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

如何为Python文件读取代码添加异常处理并维持程序执行?

处理Pandas读取空文件时的pd.concat异常问题

问题分析

你的代码中,当metadata_files包含空文件或列表为空时,会在pd.concat环节触发异常:

  • 单个空文件被pd.read_csv读取时,可能抛出ParserError(无可用解析内容)
  • 若所有文件读取后均为空/读取失败,生成器中无有效DataFrame,pd.concat会抛出ValueError: No objects to concatenate

解决方案

通过分层异常处理解决:在单个文件读取时捕获异常,跳过无效文件并发送提示;在拼接环节捕获无有效对象的异常,初始化空DataFrame并反馈状态。

修改后的代码如下:

import pandas as pd

metadata_files = []  # 替换为你的实际文件路径列表
csv_df = pd.DataFrame()
valid_dfs = []

for file in metadata_files:
    try:
        # 读取单个文件,捕获空文件、格式错误等读取异常
        df = pd.read_csv(file, encoding='utf-8', sep=";")
        valid_dfs.append(df)
    except Exception as e:
        # 替换为你的消息通知逻辑(打印、邮件、API调用等)
        print(f"读取文件失败: {file},错误原因: {str(e)}")

try:
    # 拼接所有有效DataFrame
    meta_files_df = pd.concat(valid_dfs, ignore_index=True)
    if meta_files_df.empty:
        print("警告: 所有文件读取后均为空,最终结果是空DataFrame")
except ValueError as e:
    # 无有效可拼接对象时初始化空DataFrame并发送消息
    print(f"拼接失败: {str(e)},已初始化空DataFrame")
    meta_files_df = pd.DataFrame()

关键说明

  • 单文件异常捕获:用try-except包裹pd.read_csv,覆盖空文件、文件不存在、编码错误等多种场景,同时记录具体错误信息方便排查。
  • 有效数据收集:仅将读取成功的DataFrame加入列表,避免无效数据进入拼接流程。
  • 拼接异常处理:捕获pd.concat的ValueError,处理无有效对象的情况,保证程序不中断。
  • 空结果提示:即使拼接成功但结果为空,也发送提示,避免后续逻辑因空DataFrame出现意外。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 11:15:06