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:
<code>datafile = open('./file.csv', mode='rt') data = csv.reader(datafile) for e in data: # works process(e) </code>
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.)
<code>datafile = bz2.BZ2File('./file.csv.bz2', mode='r') data = csv.reader(datafile) for e in data: # error process(e) </code>
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?