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?

Antworten auf die Frage(1)

Ihre Antwort auf die Frage