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

使用glob、os配合Pandas读取CSV文件时遇到错误

解决读取目录下所有文件而非仅CSV时的Pandas问题

你提到之前指定CSV后缀的读取代码能正常运行,但当尝试读取目标路径下所有文件(不限制为CSV类型)时遇到了问题——虽然你没贴出具体报错,但十有八九是目录里混了非CSV格式的文件,导致read_csv解析失败。我给你两个针对性的解决方案:

方案一:放宽文件类型(仅读取可解析的文本格式)

如果你只是想扩展可读取的文件类型(比如CSV、TSV、纯文本),可以用多模式匹配,同时根据文件后缀调整读取参数:

import os
from glob import glob
import pandas as pd

path = '/Volumes/File/Names/Stuff 2016'
# 按需添加你需要支持的文件后缀
supported_patterns = ['*.csv', '*.tsv', '*.txt']
all_target_files = []

# 收集所有符合模式的文件
for pattern in supported_patterns:
    all_target_files.extend(glob(os.path.join(path, pattern)))

for filename in all_target_files:
    # 根据后缀自动选择分隔符
    if filename.endswith('.csv'):
        delimiter = ';'
    elif filename.endswith('.tsv'):
        delimiter = '\t'
    else:
        delimiter = ' '  # 纯文本默认用空格分隔,可按需调整
    
    try:
        qu = pd.read_csv(filename, delimiter=delimiter, header=0, skiprows=24, nrows=2)
        print(f"✅ 读取成功 [{filename}]:\n{qu}\n")
    except Exception as e:
        print(f"❌ 读取失败 [{filename}]: {str(e)}\n")

方案二:遍历所有文件(跳过不可解析的文件)

如果确实要遍历目录下所有文件(包括非文本格式),一定要加异常处理,避免单个错误文件中断整个循环:

import os
from glob import glob
import pandas as pd

path = '/Volumes/File/Names/Stuff 2016'
# 匹配目录下所有文件(包括子文件,不包括子目录)
all_files = [f for f in glob(os.path.join(path, '*')) if not os.path.isdir(f)]

for filename in all_files:
    try:
        qu = pd.read_csv(filename, delimiter=';', header=0, skiprows=24, nrows=2)
        print(f"✅ 读取成功 [{filename}]:\n{qu}\n")
    except Exception as e:
        # 打印错误信息但继续循环
        print(f"⏭️ 跳过文件 [{filename}]: 无法解析为CSV - {str(e)}\n")

额外小建议

我把你原来的from pandas import*改成了import pandas as pd——直接导入整个模块的所有内容很容易和numpy、math这些库的函数重名,不仅会引发奇怪的bug,代码可读性也会变差,建议养成用模块别名的习惯~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:21:01