Проблемы Unicode при использовании ввода-вывода.StringIO для макета файла
Я использую io.StringIO
объект для макета файла в модульном тесте для класса. Проблема в том, что этот класс, похоже, ожидает, что все строки будут unicode по умолчанию, но builtin str
не возвращает строки unicode:
>>> buffer = io.StringIO()
>>> buffer.write(str((1, 2)))
TypeError: can't write str to text stream
но
>>> buffer.write(str((1, 2)) + u"")
6
строительство. Я предполагаю, что это связано с тем, что конкатенация со строкой unicode также делает результат unicode. Есть ли более элегантное решение этой проблемы?
1 ответов
пакета IO предоставляет питон3.X совместимости. В python 3 строки по умолчанию являются unicode.
ваш код отлично работает со стандартным пакетом StringIO,
>>> from StringIO import StringIO
>>> StringIO().write(str((1,2)))
>>>
Если вы хотите сделать это способом python 3, Используйте unicode () вместо str (). Вы должны быть откровенны здесь.
>>> io.StringIO().write(unicode((1,2)))
6