Como posso usar o io.StringIO () com o módulo csv?

Eu tentei backport um programa Python 3 para 2.7, e estou preso com um problema estranho:

>>> import io
>>> import csv
>>> output = io.StringIO()
>>> output.write("Hello!")            # Fail: io.StringIO expects Unicode
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unicode argument expected, got 'str'
>>> output.write(u"Hello!")           # This works as expected.
6L
>>> writer = csv.writer(output)       # Now let's try this with the csv module:
>>> csvdata = [u"Hello", u"Goodbye"]  # Look ma, all Unicode! (?)
>>> writer.writerow(csvdata)          # Sadly, no.
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unicode argument expected, got 'str'

Segundo os docs,io.StringIO() retorna um fluxo na memória para o texto Unicode. Funciona corretamente quando tento e alimento manualmente uma cadeia Unicode. Por que falha em conjunto com ocsv módulo, mesmo se todas as seqüências que estão sendo escritas são seqüências de caracteres Unicode? Onde é que ostr vem de que faz com que a exceção?

(Eu sei que eu posso usarStringIO.StringIO() em vez disso, mas eu estou querendo saber o que há de errado comio.StringIO() Neste cenário)

questionAnswers(4)

yourAnswerToTheQuestion