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?

Respuestas a la pregunta(1)

Su respuesta a la pregunta