Как я могу использовать io.StringIO () с модулем csv?

Я попытался перенести программу Python 3 на 2.7, и у меня возникла странная проблема:

>>> 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'

Согласно документам,io.StringIO() возвращает поток в памяти для текста Unicode. Он работает правильно, когда я пытаюсь передать строку Unicode вручную. Почему это не удается в сочетании сcsv модуль, даже если все записываемые строки являются строками Unicode? Гдеstr исходить из чего вызывает исключение?

(Я знаю, что я могу использоватьStringIO.StringIO() вместо этого, но мне интересно, что не так сio.StringIO() по этому сценарию)

Ответы на вопрос(4)

Ваш ответ на вопрос