ElementTree写入函数不写入标准输出

时间:2017-11-29 14:16:03

标签: python python-3.x elementtree

我正在尝试使用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对象。

1 个答案:

答案 0 :(得分:0)

问题与编码有关。如果没有正确的编码,则将参数视为二进制而不是字符串,这将解释错误消息。正确的写声明应该是:

tree.write(sys.stdout, encoding='unicode')

tree.write(sys.stdout.buffer)

正如评论中指出的那样。