正在刷新 Python 的 ElementTree 中的文件
Refreshing a file in Python's ElementTree
我使用 python 的 xml.etree.ElementTree 库有一段时间了,主要是在玩弄它。然而,我注意到 python 似乎将文件加载到内存中并在那里编辑,然后刷新它,并继续使用未编辑的版本。
例如,如果我的程序将一个元素添加到 XML 文件,然后遍历该 XML 文件,它不会看到它之前所做的添加。
这是我的代码的精简版:
用于添加到文件:
import xml.etree.ElementTree as ET
tree = et.parse("file.xml")
root = tree.getroot()
newel = ET.Element("element", tag=foo, )
newel.text = bar
root.append(newel)
tree.write("file.xml")
for child in root:
if child.get("tag") == foo:
print(child.text)
我是不是做错了什么,或者 'refreshing' 的好方法是什么,可以这么说,程序中的 XML 文件,所以当我用 for 循环遍历程序时,我可以看到我的新元素了吗?
我正在使用 python 3.5.
这与刷新或冲洗无关。 Element 构造函数的签名是:
__init__(self, tag, attrib={}, **extra)
除了将 tag
隐式指定为 "element"
之外,您还将其作为命名参数传入。假设您希望 tag
成为一个元素属性(基于您尝试使用 Element.get
检索它的方式),以下应该有效(有一些额外的更正):
foo = "foo"
bar = "bar"
import xml.etree.ElementTree as ET
tree = ET.parse("file.xml")
root = tree.getroot()
newel = ET.Element("element", {"tag": foo})
newel.text = bar
root.append(newel)
tree.write("file.xml")
for child in root:
if child.get("tag") == foo:
print(child.text)
我使用 python 的 xml.etree.ElementTree 库有一段时间了,主要是在玩弄它。然而,我注意到 python 似乎将文件加载到内存中并在那里编辑,然后刷新它,并继续使用未编辑的版本。 例如,如果我的程序将一个元素添加到 XML 文件,然后遍历该 XML 文件,它不会看到它之前所做的添加。
这是我的代码的精简版:
用于添加到文件:
import xml.etree.ElementTree as ET
tree = et.parse("file.xml")
root = tree.getroot()
newel = ET.Element("element", tag=foo, )
newel.text = bar
root.append(newel)
tree.write("file.xml")
for child in root:
if child.get("tag") == foo:
print(child.text)
我是不是做错了什么,或者 'refreshing' 的好方法是什么,可以这么说,程序中的 XML 文件,所以当我用 for 循环遍历程序时,我可以看到我的新元素了吗?
我正在使用 python 3.5.
这与刷新或冲洗无关。 Element 构造函数的签名是:
__init__(self, tag, attrib={}, **extra)
除了将 tag
隐式指定为 "element"
之外,您还将其作为命名参数传入。假设您希望 tag
成为一个元素属性(基于您尝试使用 Element.get
检索它的方式),以下应该有效(有一些额外的更正):
foo = "foo"
bar = "bar"
import xml.etree.ElementTree as ET
tree = ET.parse("file.xml")
root = tree.getroot()
newel = ET.Element("element", {"tag": foo})
newel.text = bar
root.append(newel)
tree.write("file.xml")
for child in root:
if child.get("tag") == foo:
print(child.text)