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

使用Pandas读取CSV文件触发OSError:初始化文件失败

解决Pandas读取含德语特殊字符CSV文件的问题

看来你在读取带德语特殊字符的CSV时遇到了两个小麻烦,我来帮你一步步拆解解决:

第一个问题:直接用pd.read_csv触发OSError: Initializing from file failed

这个报错在处理含特殊字符的文件时很常见,结合你的场景(同目录XLS正常访问、文件有德语字符),可以优先试试这几个方案:

  • 显式指定文件编码:德语里的ä、ö、ü、ß这类特殊字符,通常用latin-1(也叫iso-8859-1)或者utf-8编码,你可以直接在read_csv里指定编码参数:

    df = pd.read_csv(r'path to file', sep=';', encoding='latin-1')
    # 如果latin-1不行,再试试utf-8
    # df = pd.read_csv(r'path to file', sep=';', encoding='utf-8')
    
  • 切换Python引擎读取:Pandas默认用C语言实现的引擎,虽然速度快,但对特殊字符或者格式稍复杂的文件兼容性不如Python引擎,试试切换引擎:

    df = pd.read_csv(r'path to file', sep=';', engine='python', encoding='latin-1')
    
  • 简化文件路径:哪怕用了原始字符串r'',如果路径里包含空格、德语字符或者非ASCII字符,偶尔也会触发路径解析问题,你可以把文件移到一个路径简单的目录(比如C:\temp\data.csv)再测试,排除路径的影响。

第二个问题:把csv.reader对象传给pd.read_csv触发ValueError

这个其实是个小误区——pd.read_csv并不接受csv.reader这种迭代器作为输入,它需要的是文件路径字符串、open()返回的文件对象或者字节流。如果你想先用csv库读取再转成DataFrame,可以这样写:

import csv
import pandas as pd

rows = []
# 同样要指定正确的编码
with open(r'path to file', 'r', encoding='latin-1') as f:
    reader = csv.reader(f, delimiter=';')
    for row in reader:
        rows.append(row)

# 把读取到的行转为DataFrame,第一行作为表头
df = pd.DataFrame(rows[1:], columns=rows[0])

额外排查建议

  • 检查文件完整性:虽然csv库能读取首行,但10MB的大文件可能存在局部编码异常或者损坏的情况,你可以用Notepad++这类编辑器打开文件,查看是否有乱码、异常换行或者不可见字符。
  • 尝试pd.read_table替代:read_table默认用制表符分隔,但可以指定sep=';',有时候能解决一些引擎兼容的小问题:
    df = pd.read_table(r'path to file', sep=';', encoding='latin-1', engine='python')
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:09:52