Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将根XML的某些子级依次写入新文件Python_Python_Xml_Elementtree - Fatal编程技术网

如何将根XML的某些子级依次写入新文件Python

如何将根XML的某些子级依次写入新文件Python,python,xml,elementtree,Python,Xml,Elementtree,我从一个大的XML文件开始,试图创建一个只包含我想要的元素(其中一个包含特定序列号)的新文件。我几乎所有的东西都在工作,唯一的问题是,当我把元素写到一个新文件中时,它似乎在一次又一次地写自己,最后我只在文件中打印最后一个元素。如何使下一个元素写入文件时,它将在上一个元素之后启动?我在考虑某种类型的行计数和插入,我只是不知道如何格式化它 下面是我的循环,它查找我想要的元素并将它们写入文件: for child in root: for element in child: i

我从一个大的XML文件开始,试图创建一个只包含我想要的元素(其中一个包含特定序列号)的新文件。我几乎所有的东西都在工作,唯一的问题是,当我把元素写到一个新文件中时,它似乎在一次又一次地写自己,最后我只在文件中打印最后一个元素。如何使下一个元素写入文件时,它将在上一个元素之后启动?我在考虑某种类型的行计数和插入,我只是不知道如何格式化它

下面是我的循环,它查找我想要的元素并将它们写入文件:

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'
模式下打开文件会破坏现有内容。所以你只想做一次。