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

如何用if/else或try/except处理空CSV读取生成DataFrame

解决空CSV文件读取为空DataFrame的问题

你的问题出在使用了无差别捕获所有异常的裸except,这会导致任何读取错误(比如文件路径错误、编码问题)都被捕获并返回空DataFrame,同时还没处理「有表头但无数据行」的情况——这种场景下pd.read_csv不会抛出异常,但返回的DataFrame本身是空的。

以下是针对性的解决方案:

方案1:捕获特定异常+判断DataFrame是否为空

import pandas as pd
from pandas.errors import EmptyDataError

try:
    # 尝试读取CSV文件
    new_df = pd.read_csv(file_name)
    # 可选:如果需要把「有表头但无数据」的情况也转为纯空DataFrame
    if new_df.empty:
        new_df = pd.DataFrame()
except EmptyDataError:
    # 处理完全空的文件(连表头都没有)
    new_df = pd.DataFrame()
except FileNotFoundError:
    # 可选:处理文件不存在的场景
    new_df = pd.DataFrame()

关键说明:

  • 捕获特定异常:只捕获EmptyDataError(pandas读取完全空文件时抛出的异常)和FileNotFoundError(文件不存在时的异常),避免误捕获其他无关错误(比如编码错误、权限问题)。
  • 判断new_df.empty:如果你的「空文件」指的是有表头但没有数据行,pd.read_csv不会报错,但返回的DataFrame满足empty=True,此时可以根据需求转为纯空DataFrame,或者保留表头结构。

原代码失效原因:

裸except会捕获所有类型的异常,比如如果你的非空文件存在编码问题、路径拼写错误,都会进入except分支返回空DataFrame,让你误以为无论文件是否为空都返回空值。指定特定异常后,只有真正的空文件/文件不存在场景才会触发空DataFrame的赋值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 06:00:07