2017-05-30 2 views
0

Ich versuche pandas.read_csv zu verwenden, um Daten aus einigen .csv-Dateien zu erhalten. Dies funktioniert gut, solange kein Akzent (z. B. ä, é, ü) im Dateinamen oder Dateipfad vorhanden ist. Sobald ich einen Dateinamen wie düm1.csv verwende, erhalte ich den folgenden Fehler: OSError: Initializing from file failed. Mein Code ist:pandas: oserror mit Akzent/Sonderzeichen in Dateipfad und Dateiname

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

Ich Pandas 0.20.1 und Python 3.6.0 verwenden. Ich habe festgestellt, dass dies in früheren Versionen ein Problem war, aber ich dachte, dass es gelöst wurde. Irgendwelche Ideen, wie das zu beheben ist? Ich fand auch diese: https://github.com/pandas-dev/pandas/issues/15086

Ausgabe von pd.show_versions():

installierten Versionen begehen: Keine Python: 3.6.0.final.0 Python-Bits: 64 OS: Windows OS Release: 10 Maschine: AMD64 Prozessor: Intel64 Familie 6 Modell 78 3 Stepping, Genuine byteorder: wenig LC_ALL: Keine LANG: en LOCALE: None.None

Pandas: 0.20.1 pytest: 3.0.5 pip: 9.0.1 Setuptools: 27.2.0 Cython: Keine numpy: 1.11.3 scipy: 0.18.1 xarray: Keine IPython: 5.2. 2 Sphinx: 1.5.1 patsy: 0.4.1 dateutil: 2.6.0 pytz: 2.016,10 blosc: Keine Engpass: 1.2.0 Tabellen: 3.2.2 numexpr: 2.6.2 Feder: Keine 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: Keine psycopg2: Keine jinja2: 2.9.5 s3fs : keine pandas_gbq: keine pandas_datareader: keine

+0

Ich kann diesen Fehler mit Python 3.6.1, Pandas 0.20.1 reproduzieren; Ich hatte es jedoch erst gestern bei der Arbeit mit Python 3.4.4 und Pandas 0.18.1. – elzell

+0

Das ist komisch. Könnte es ein Bug in neuen Versionen sein und ich sollte downgraden? – rashid

Antwort

1

Ich hatte ein ähnliches Problem. Es sieht so aus, als ob das Problem bei pandas.read_csv mit Python 3.6 in einem Windows-System auftritt.

Python 3.6 ändern Windows-Dateisystemcodierung von "mbcs" zu "UTF-8". Siehe Python PEP 529. Sie können den Befehl sys.getfilesystemencoding() verwenden das aktuelle Dateisystem Codierung

ich zwei Lösungen, dies zu umgehen:

1.- Mit diesem Code alle die App funktioniert mit dem Stand der Python < = 3.5 Codierung zu ändern ("MBCS")

import sys 
sys._enablelegacywindowsfsencoding() 

2.- Geben Sie einen Dateizeiger auf den 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") 

Sie diesen Beitrag sehen können: pandas.read_csv can't import file with accent mark in path

0

Die issue wurde bisher nicht gelöst. Warte bis ein PR. Oder versuche es mit Python 2.7 Ich denke, das könnte funktionieren

1

Ich habe den Namen beim Erstellen einer gefälschten Datei 'düm1.csv' getestet.

wenn ich laufe:

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

Ich habe kein OSError und die Datei in meinem IPython geöffnet ist.

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 

Haben Sie es ohne Codierung versucht? Ohne Akzent?

C.

+0

Danke, es ist komisch, dass es für dich funktioniert. Ich habe es ohne Verschlüsselung versucht, aber es funktioniert auch nicht. Es funktioniert jedoch ohne Akzente. Irgendwelche anderen Ideen? Vielen Dank für das Testen, auf diese Weise weiß ich, dass es kein allgemeines Problem ist, sondern eher mit meinem Code, der Maschine oder der Paketversion zusammenhängt. – rashid

+0

Gern geschehen. Ich benutze Python 3.6.1 und Ipython 5.3.0. Sie können versuchen mit encoding = 'ISO-8859-1' –

+0

Ich versuchte mit der Codierung ISO-8859-1, aber es hat auch nicht funktioniert. Ich werde Python und Ipython aktualisieren und hoffe, es hilft. – rashid

Verwandte Themen