Python元素树写入新文件

Kyl*_*man 3 python xml tree element writing

嗨,所以我一直在努力解决这个问题,并且无法弄清楚为什么我会遇到错误.试图将一些基本的XML导出到一个新文件中,不断给我一个TypeError.下面是一小段代码示例

from xml.etree.ElementTree import ElementTree
from xml.etree.ElementTree import Element
from xml.etree.ElementTree import SubElement
import xml.etree.ElementTree as ET


root = Element('QuoteWerksXML')
tree = ElementTree(root)
ver = SubElement(root, "AppVersionMajor")
ver.text = '5.1'

tree.write(open('person.xml', 'w'))
Run Code Online (Sandbox Code Playgroud)

Ilj*_*ilä 16

ElementTree.write方法默认为us-ascii编码,因此需要打开一个用于编写二进制文件的文件:

输出是字符串(str)或二进制(字节).这由encoding参数控制.如果是encoding"unicode",则输出为字符串; 否则,它是二进制的.请注意,如果它是一个打开的文件对象,这可能与文件类型冲突; 确保不要尝试将字符串写入二进制流,反之亦然.

因此要么打开文件以便以二进制模式写入:

tree.write(open('person.xml', 'wb'))
Run Code Online (Sandbox Code Playgroud)

或打开文件以文本方式编写,并给"unicode"作为编码:

tree.write(open('person.xml', 'w'), encoding='unicode')
Run Code Online (Sandbox Code Playgroud)

  • 如果写入标准输出,您可以使用`tree.write(sys.stdout.buffer)`。 (3认同)