При переходе на 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?
Какое лучшее решение здесь?