Converter fluxo de entrada binário para o modo de texto

Eu estou tentando ler um arquivo CSV bzip2-comprimido no Python 3.2. Para um arquivo CSV descompactado, isso funciona:

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

O problema é queBZ2File suporta apenas a criação de um fluxo binárioe no Python 3,csv.reader aceita apenas fluxos de texto. (O mesmo problema ocorre com arquivos gzip e zip).

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

Em particular, a linha indicada lança a exceção_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?).

Eu também tenteidata = csv.reader(codecs.EncodedFile(datafile, 'utf8')), mas isso não corrige o erro.

Como posso envolver o fluxo de entrada binária para que ele possa ser usado no modo de texto?