Преобразовать двоичный поток ввода в текстовый режим
Я пытаюсь прочитать сжатый bzip2 CSV-файл в Python 3.2. Для несжатого CSV-файла это работает:
<code>datafile = open('./file.csv', mode='rt') data = csv.reader(datafile) for e in data: # works process(e) </code>
Проблема в том, чтоBZ2File
only supports creating a binary streamи в Python 3,csv.reader
accepts only text streams, (Та же проблема возникает с файлами gzip и zip.)
<code>datafile = bz2.BZ2File('./file.csv.bz2', mode='r') data = csv.reader(datafile) for e in data: # error process(e) </code>
В частности, указанная строка выдает исключение_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
.
Я также пыталсяdata = csv.reader(codecs.EncodedFile(datafile, 'utf8'))
, но это не исправляет ошибку.
Как я могу обернуть поток двоичного ввода, чтобы он мог использоваться в текстовом режиме?