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)