如何将根XML的某些子级依次写入新文件Python
我从一个大的XML文件开始,试图创建一个只包含我想要的元素(其中一个包含特定序列号)的新文件。我几乎所有的东西都在工作,唯一的问题是,当我把元素写到一个新文件中时,它似乎在一次又一次地写自己,最后我只在文件中打印最后一个元素。如何使下一个元素写入文件时,它将在上一个元素之后启动?我在考虑某种类型的行计数和插入,我只是不知道如何格式化它 下面是我的循环,它查找我想要的元素并将它们写入文件:如何将根XML的某些子级依次写入新文件Python,python,xml,elementtree,Python,Xml,Elementtree,我从一个大的XML文件开始,试图创建一个只包含我想要的元素(其中一个包含特定序列号)的新文件。我几乎所有的东西都在工作,唯一的问题是,当我把元素写到一个新文件中时,它似乎在一次又一次地写自己,最后我只在文件中打印最后一个元素。如何使下一个元素写入文件时,它将在上一个元素之后启动?我在考虑某种类型的行计数和插入,我只是不知道如何格式化它 下面是我的循环,它查找我想要的元素并将它们写入文件: for child in root: for element in child: i
for child in root:
for element in child:
if element.tag == 'DeviceId':
if element.text == 'NS-00-00000':
f = open('new_3.log','w')
p = (ET.tostringlist(child, encoding='unicode', pretty_print=True))
print(p)
f.write('\n'.join(p))
f.close()
谢谢大家! 在循环开始前打开文件,在循环结束后关闭文件。从外到顶的所有语句都是这样吗?我应该在循环中关闭它还是将其取出?谢谢,在最外面的
for
循环之前。循环完成后关闭它。谢谢你的工作!你能解释一下为什么会修复它吗?在'w'
模式下打开文件会破坏现有内容。所以你只想做一次。