web-dev-qa-db-ja.com

Python新しいファイルへの要素ツリーの書き込み

こんにちは。私はこれに苦労していて、なぜエラーが発生するのかよくわかりません。基本的な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'))
4
Kyle Zimmerman

ElementTree.write メソッドのデフォルトはus-asciiエンコーディングであるため、バイナリを書き込むために開かれたファイルが必要です。

出力は、文字列(str)またはバイナリ(bytes)のいずれかです。これは、encoding引数によって制御されます。 encoding"unicode"の場合、出力は文字列です。それ以外の場合はバイナリです。開いているファイルオブジェクトの場合、これはfileのタイプと競合する可能性があることに注意してください。文字列をバイナリストリームに書き込もうとしないように注意してください。その逆も同様です。

したがって、バイナリモードで書き込むためにファイルを開きます。

tree.write(open('person.xml', 'wb'))

または、テキストモードで書き込むためにファイルを開き、"unicode"encodingとして指定します。

tree.write(open('person.xml', 'w'), encoding='unicode')
12
Ilja Everilä