【问题标题】:pandas: oserror with accent/special character in file path and file namepandas:文件路径和文件名中带有重音/特殊字符的 oserror
【发布时间】:2017-09-17 22:51:10
【问题描述】:

我正在尝试使用 pandas.read_csv 从一些 .csv 文件中获取数据。只要文件名或文件路径中没有重音符号(例如 ä、é、ü),就可以正常工作。一旦我使用düm1.csv之类的文件名,我就会收到以下错误:OSError: Initializing from file failed。我的代码是:

dum1 = pd.read_csv(r"C:\Users\MyName\Desktop\dumm12\düm1.csv", sep = ";", decimal = ",", encoding = "utf-8")

我正在使用 pandas 0.20.1 和 python 3.6.0。我发现这在以前的版本中是一个问题,但我认为它已经解决了。有想法该怎么解决这个吗?我还发现了这个: https://github.com/pandas-dev/pandas/issues/15086

pd.show_versions() 的输出:

安装版本 提交:无 蟒蛇:3.6.0.final.0 蟒蛇位:64 操作系统:Windows 操作系统版本:10 机器:AMD64 处理器:Intel64 Family 6 Model 78 Stepping 3, GenuineIntel 字节序:很少 LC_ALL:无 朗:恩 语言环境:无。无

熊猫:0.20.1 pytest:3.0.5 点数:9.0.1 设置工具:27.2.0 赛通:无 麻木:1.11.3 scipy:0.18.1 xarray:无 IPython:5.2.2 狮身人面像:1.5.1 帕西:0.4.1 日期工具:2.6.0 皮茨:2016.10 块:无 瓶颈:1.2.0 表:3.2.2 数字表达式:2.6.2 羽毛:无 matplotlib:2.0.0 开放pyxl:2.4.1 xlrd:1.0.0 xlwt:1.2.0 xlsxwriter:0.9.6 lxml:3.7.3 bs4:4.5.3 html5lib: 0.999 sqlalchemy:1.1.5 pymysql:无 psycopg2:无 神社2:2.9.5 s3fs:无 pandas_gbq:无 pandas_datareader:无

【问题讨论】:

  • 我可以使用 Python 3.6.1、Pandas 0.20.1 重现此错误;但是直到昨天我在使用 Python 3.4.4 和 Pandas 0.18.1 时才拥有它。
  • 这很奇怪。可能是新版本的错误,我应该降级吗?

标签: python csv pandas special-characters


【解决方案1】:

我遇到了类似的问题。在 Windows 系统中,使用 Python 3.6 的 pandas.read_csv 似乎会出现问题。

Python 3.6 将 Windows 文件系统编码从“mbcs”更改为“UTF-8”。见Python PEP 529。可以使用命令sys.getfilesystemencoding()获取当前文件系统编码

我有两个解决方案:

1.- 使用此代码将所有应用更改为使用之前的 Python

import sys
sys._enablelegacywindowsfsencoding()

2.- 将文件指针传递给 pandas.read_csv

with open("C:\Users\MyName\Desktop\dumm12\düm1.csv", 'r') as fp:
        dum1 = pd.read_csv(fp, sep = ";", decimal = ",", encoding = "utf-8")

你可以看到这个帖子:pandas.read_csv can't import file with accent mark in path

【讨论】:

    【解决方案2】:

    我在创建假文件“düm1.csv”时测试了该名称。

    当我跑步时:

    df = pd.read_csv('düm1.csv',sep=';')
    

    我没有 OSError 并且文件在我的 Ipython 中打开。

       Unnamed: 0  test1  test2  test3  tes4
    0         NaN    1.0    2.0    3.0   4.0
    1         NaN    NaN    NaN    NaN   NaN
    2         NaN    NaN    NaN    NaN   NaN
    3         NaN    NaN    NaN    NaN   NaN
    4         NaN    NaN    NaN    NaN   NaN
    

    你试过不编码吗?没有口音?

    C.

    【讨论】:

    • 谢谢,它对你有用很奇怪。我试过不编码,但它也不起作用。但是,它可以在没有重音的情况下工作。还有其他想法吗?感谢您的测试,这样我知道这不是一般问题,而是与我的代码、机器或包版本有关。
    • 不客气。我正在使用 python 3.6.1 和 ipython 5.3.0。您可以尝试使用 encoding='ISO-8859-1'
    • 我尝试使用编码 ISO-8859-1,但它也不起作用。我会更新python和ipython,希望对你有帮助。
    • 我尝试过更新 python 和 ipython。它不适用于重音。看来我不得不接受现状。
    • 可能取决于您计算机的语言。我不知道,但是如果您更改名称并且最终可以使用您的数据,那么问题不会出自您的数据或熊猫。祝你好运!
    【解决方案3】:

    issue 到现在还没有解决。等到PR。或者用 Python 2.7 试试,我想这可能会起作用

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-17
      • 2013-01-23
      • 2018-02-08
      • 2016-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多