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

批量读取coins文件夹CSV至DataFrame列表报错求助

解决读取coins文件夹下所有CSV到DataFrame列表的问题

我来帮你搞定这个问题!你遇到的两个报错其实是两个不同的问题叠加导致的,咱们一步步拆解解决:

问题分析

你的原代码有两个核心问题:

  1. 遍历方式错误:for file in './coins' 其实是在遍历字符串 './coins' 的每个字符,而不是读取文件夹里的文件。这就导致你拼接出来的路径会是 ./coins/.、./coins/c 这种无效路径,自然触发 IsADirectoryError(因为.是当前目录)。
  2. CSV格式问题:去掉engine='python'后触发的ParserError,说明你的CSV文件可能存在格式不规范的情况(比如换行符异常、分隔符不一致),pandas默认的C引擎处理不了,需要用Python引擎来兼容。

正确解决方案

我们需要先准确筛选出coins文件夹下所有的.csv文件,再逐个用Python引擎读取并存入列表。这里提供两种常用方法:

方法1:使用glob模块(推荐,代码更简洁)

import pandas as pd
import glob

# 精准匹配coins文件夹下所有.csv文件
csv_file_paths = glob.glob('./coins/*.csv')

# 初始化空列表存储DataFrame
logs_total = []

# 遍历读取每个文件
for file_path in csv_file_paths:
    try:
        # 使用python引擎处理格式不规范的CSV
        df = pd.read_csv(file_path, engine='python')
        logs_total.append(df)
        print(f"成功读取文件: {file_path}")
    except Exception as e:
        # 捕获异常,避免单个文件失败导致整个程序终止
        print(f"读取文件 {file_path} 时出错: {str(e)}")

方法2:使用os模块(更灵活,适合复杂目录场景)

import pandas as pd
import os

# 定义目标文件夹路径
target_dir = './coins'

# 筛选出文件夹下所有.csv文件的完整路径
csv_file_paths = [
    os.path.join(target_dir, filename) 
    for filename in os.listdir(target_dir)
    if filename.endswith('.csv') and os.path.isfile(os.path.join(target_dir, filename))
]

logs_total = []
for file_path in csv_file_paths:
    try:
        df = pd.read_csv(file_path, engine='python')
        logs_total.append(df)
    except Exception as e:
        print(f"处理文件 {file_path} 失败: {str(e)}")

关键说明

  • glob.glob('./coins/*.csv') 会直接返回所有符合条件的CSV文件路径,不会包含目录项,从根源避免IsADirectoryError。
  • engine='python' 会用纯Python实现的解析器处理CSV,能兼容更多不规范的格式,解决ParserError问题。
  • 加入try-except块可以避免单个文件读取失败导致整个程序崩溃,方便排查问题文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:57:30