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

如何读取文件夹中全部CSV文件并跳过无列的空文件?

解决读取CSV时的EmptyDataError问题

你遇到的EmptyDataError是因为空CSV文件没有可解析的列信息,导致pd.read_csv无法处理。以下两种修改方式可以跳过这类空文件:

方案一:提前过滤空文件

可以根据文件大小或内容提前筛选出有效文件,避免后续读取报错。这里提供两种过滤逻辑:

import os
import glob
import pandas as pd

os.chdir('file_path')
file_extension = '.csv'
all_filenames = glob.glob(f"*{file_extension}")

valid_files = []
for file in all_filenames:
    # 逻辑1:按文件大小过滤(针对你提到的1KB空文件)
    if os.path.getsize(file) > 1024:
        valid_files.append(file)
    
    # 逻辑2:更稳妥,检查文件实际内容是否为空(避免空文件大小超过1KB的情况)
    # with open(file, 'r') as f:
    #     if f.read().strip():
    #         valid_files.append(file)

# 合并所有有效CSV文件
df = pd.concat([pd.read_csv(t) for t in valid_files], ignore_index=True, sort=False, axis=0)

方案二:读取时捕获异常跳过

通过捕获EmptyDataError异常,直接跳过无法解析的空文件,这种方式能覆盖所有导致该错误的场景:

import os
import glob
import pandas as pd
from pandas.errors import EmptyDataError

os.chdir('file_path')
file_extension = '.csv'
all_filenames = glob.glob(f"*{file_extension}")

dfs = []
for file in all_filenames:
    try:
        # 尝试读取文件
        temp_df = pd.read_csv(file)
        dfs.append(temp_df)
    except EmptyDataError:
        # 捕获空文件异常,打印提示并跳过
        print(f"跳过空文件:{file}")
        continue

# 合并所有成功读取的DataFrame
df = pd.concat(dfs, ignore_index=True, sort=False, axis=0)

两种方案对比:

  • 方案一效率更高,提前过滤减少了读取操作;
  • 方案二更健壮,能处理所有触发EmptyDataError的文件(比如文件有内容但无有效列的情况)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 09:35:21