Python3: кодирование StringIO и Elementree

При переходе на Python 3 функция write() xml.etree.ElementTree работает не так, как ожидалось.

Мне нужно, чтобы следующий код работал с Python3:

tree = ET.ElementTree(root)
fileobj = StringIO()

tree.write(fileobj, encoding="utf-8")

Проблема с py3 заключается в том, что он обрабатывает fileobj как байты и поэтому не может записать его в StringIO. Затем, после проверки документации ElementTree, я должен использовать encoding='unicode' и это отлично работает в py3, но не работает с py2.

Теперь есть способ заставить его работать как с py2, так и с py3, или мне нужно использовать io.BytesIO в качестве обходного пути для py3, или я должен использовать другую кодировку, основанную на версии python?

Какое лучшее решение здесь?


person Nikolay Derkach    schedule 31.10.2013    source источник


Ответы (1)


В конце концов я решил использовать io.BytesIO как для py2, так и для py3.

person Nikolay Derkach    schedule 13.11.2013