Konvertiert den binären Eingabestream in den Textmodus
Ich versuche, eine bzip2-komprimierte CSV-Datei in Python 3.2 zu lesen. Für eine unkomprimierte CSV-Datei funktioniert Folgendes:
<code>datafile = open('./file.csv', mode='rt') data = csv.reader(datafile) for e in data: # works process(e) </code>
Das Problem ist, dassBZ2File
unterstützt nur das Erstellen eines binären Streamsund in Python 3csv.reader
akzeptiert nur Textströme. (Das gleiche Problem tritt bei gzip- und zip-Dateien auf.)
<code>datafile = bz2.BZ2File('./file.csv.bz2', mode='r') data = csv.reader(datafile) for e in data: # error process(e) </code>
Insbesondere löst die angegebene Zeile die Ausnahme aus_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
.
Ich habe es auch versuchtdata = csv.reader(codecs.EncodedFile(datafile, 'utf8'))
, aber das behebt den Fehler nicht.
Wie kann ich den binären Eingabestream so umbrechen, dass er im Textmodus verwendet werden kann?