Convertir el flujo de entrada binario al modo de texto
Estoy intentando leer un archivo CSV comprimido con bzip2 en Python 3.2. Para un archivo CSV sin comprimir, esto funciona:
<code>datafile = open('./file.csv', mode='rt') data = csv.reader(datafile) for e in data: # works process(e) </code>
El problema es eseBZ2File
Solo soporta la creación de un flujo binario., y en Python 3,csv.reader
acepta solo flujos de texto. (El mismo problema ocurre con los archivos gzip y zip.)
<code>datafile = bz2.BZ2File('./file.csv.bz2', mode='r') data = csv.reader(datafile) for e in data: # error process(e) </code>
En particular, la línea indicada arroja la excepción._csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
.
También he intentadodata = csv.reader(codecs.EncodedFile(datafile, 'utf8'))
, pero eso no soluciona el error.
¿Cómo puedo ajustar el flujo de entrada binario para que se pueda utilizar en modo de texto?