我正在尝试使用ElementTree将XML结构输出到stdout。我正在尝试:
root = ET.Element('networkData')
tree = ET.ElementTree(root)
tree.write(sys.stdout)
但我没有输出。将参数更改为字符串会按预期生成XML文件。使用调试器(从SO添加编码提示)我得到:
-> tree.write(sys.stdout, encoding='utf-8')
(Pdb) n
TypeError: write() argument must be str, not bytes
谷歌搜索错误我得到了几个点击但没有似乎解决这个问题。 另外,我对错误消息感到困惑,因为sys.stdout是一个_io.TextIOWrapper对象。
答案 0 :(得分:0)
问题与编码有关。如果没有正确的编码,则将参数视为二进制而不是字符串,这将解释错误消息。正确的写声明应该是:
tree.write(sys.stdout, encoding='unicode')
或
tree.write(sys.stdout.buffer)
正如评论中指出的那样。