Konwertuj strumień wejściowy binarny na tryb tekstowy

Próbuję odczytać plik CSV skompresowany za pomocą bzip2 w Pythonie 3.2. W przypadku nieskompresowanego pliku CSV działa to:

datafile = open('./file.csv', mode='rt')
data = csv.reader(datafile)
for e in data:    # works
    process(e)

Problemem jestBZ2File obsługuje tylko tworzenie strumienia binarnego, iw Pythonie 3,csv.reader akceptuje tylko strumienie tekstowe. (Ten sam problem występuje w przypadku plików gzip i zip.)

datafile = bz2.BZ2File('./file.csv.bz2', mode='r')
data = csv.reader(datafile)
for e in data:    # error
    process(e)

W szczególności wskazana linia zgłasza wyjątek_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?).

Próbowałem teżdata = csv.reader(codecs.EncodedFile(datafile, 'utf8')), ale to nie naprawia błędu.

Jak mogę zawinąć binarny strumień wejściowy, aby mógł być używany w trybie tekstowym?