2017-05-30 54 views
0

我试图使用pandas.read_csv从某些.csv文件中获取数据。只要文件名或文件路径中没有重音(例如,ä,é,ü),就可以正常工作。只要我使用文件名,如düm1.csv,我收到以下错误:OSError: Initializing from file failed。我的代码是:pandas:在文件路径和文件名中带有重音/特殊字符的oserror

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

我使用熊猫0.20.1和Python 3.6.0。我发现这在以前的版本中是个问题,但我认为它已经解决了。有想法该怎么解决这个吗?我还发现这一点:

安装的版本 提交::无 蟒:3.6.0.final.0 蟒位:64 OS: https://github.com/pandas-dev/pandas/issues/15086

pd.show_versions()的输出视窗 OS-释放:10 机:AMD64 处理器:Intel64位家族6模型78步进3,GenuineIntel 字节顺序:小 LC_ALL:无 LANG:EN 区域设置:None.None

大熊猫:0.20.1 pytest:3.0.5 PIP:9.0.1 setuptools的:27.2.0 用Cython:无 numpy的:1.11.3 SciPy的:0.18.1 xarray:无 IPython的:5.2。 2个 斯芬克斯:1.5.1 帕齐:0.4.1 dateutil:2.6.0 pytz:2016.10 blosc:无 瓶颈:1.2.0 表:3.2.2 numexpr:2.6.2 羽毛:无 matplotlib:2.0.0 openpyxl: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:无 的Jinja2:2.9.5 s3fs :无 pandas_gbq:无 pandas_datareader:无

+0

我可以用Python 3.6.1重现这个错误,Pandas 0.20.1;但是直到昨天,我还没有使用Python 3.4.4和Pandas 0.18.1。 – elzell

+0

这很奇怪。可能它是新版本中的错误,我应该降级? – rashid

回答

1

我有类似的问题。这看起来像是在Windows系统中使用Python 3.6的pandas.read_csv时发生的问题。

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

我解决这个问题两个解决方案:

1.-使用此代码来改变所有的应用与现有的Python < = 3.5编码工程( “MBCS”)

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

0

issue至今尚未解决。等到公关。或者使用Python 2.7来试用它我想这可能会起作用

1

我在创建假文件'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.

+0

谢谢,它很适合你。我尝试过没有编码,但它也不起作用。然而,它没有口音。任何其他想法?感谢您的测试,这种方式我知道这不是一个普遍问题,而是与我的代码,机器或包版本有关。 – rashid

+0

不客气。我使用python 3.6.1和ipython 5.3.0。你可以尝试使用encoding ='ISO-8859-1' –

+0

我试着使用编码ISO-8859-1,但它也没有工作。我将更新python和ipython,并希望它有帮助。 – rashid

相关问题