Python 将一个XML文件的对象附加到另一个XML文件

Python 将一个XML文件的对象附加到另一个XML文件,python,xml,elementtree,Python,Xml,Elementtree,我正在进行对象检测,其中有两个XML文件,我想将XML文件中不存在的XML对象附加到新的XML文件中 请帮我做这个。如果有人能帮助我将对象附加到另一个XML中,我已经编写了一段代码来创建对象体系结构,这将非常好 import os import xml.etree.ElementTree as ET import glob Old_XML_Location = "..." New_XML_Location = "..." for new_xml_file in glob.glob(New_X

我正在进行对象检测,其中有两个XML文件,我想将XML文件中不存在的XML对象附加到新的XML文件中

请帮我做这个。如果有人能帮助我将对象附加到另一个XML中,我已经编写了一段代码来创建对象体系结构,这将非常好

import os
import xml.etree.ElementTree as ET
import glob

Old_XML_Location = "..."
New_XML_Location = "..."

for new_xml_file in glob.glob(New_XML_Location + '/*.xml'):
    for old_xml_file in glob.glob(Old_XML_Location + '/*.xml'):
        print(old_xml_file)
        if os.path.basename(new_xml_file) == os.path.basename(old_xml_file):
            #xml_list = []
            tree = ET.parse(new_xml_file)
            root = tree.getroot()
            for member in root.findall('object'):
                print(member[0].text)
                #if member[0].text == "Time":
                value = (member[0].text,
                         int(member[4][0].text),
                         int(member[4][1].text),
                         int(member[4][2].text),
                         int(member[4][3].text)
                         )
                xlobject=ET.Element("object")
                root.append(xlobject)
                xlbname=ET.SubElement(xlobject,"name")
                xlbname.text = value[0]
                pose=ET.SubElement(xlobject,"pose")
                pose.text="Unspecified"        
                truncate=ET.SubElement(xlobject,"truncated")
                truncate.text="0"        
                difficult=ET.SubElement(xlobject,"difficult")
                difficult.text="0"    
                bndbox=ET.SubElement(xlobject,"bndbox")
                tree = ET.ElementTree(root)        
                xlxmin=ET.SubElement(bndbox,"xmin")
                xlxmin.text=str(int(value[1]))         
                xlymin=ET.SubElement(bndbox,"ymin")
                xlymin.text=str(int(value[2]))        
                xlxax=ET.SubElement(bndbox,"xmax")
                xlxax.text=str(int(value[3]))        
                xlymax=ET.SubElement(bndbox,"ymax")
                xlymax.text=str(int(value[4]))
                tree = ET.ElementTree(root)
                tree.write(old_xml_file)
                # with open(old_xml_file, "w") as fh:
                #   fh.write(tree)
                # else :
                #   print("False") 

到目前为止,通过使用您的代码和小小的谷歌搜索,我已经将xmls组合为类ball和非ball。 这是密码

# -*- coding: utf-8 -*-
"""
Created on Mon Apr  6 06:24:41 2020

@author: sahab
"""


import os
import xml.etree.ElementTree as ET
import glob

for new_xml_file in glob.glob(r'E:\Cricket\Cricket\ball\*.xml'):
    for old_xml_file in glob.glob(r'E:\Cricket\Cricket\noball\\' + os.path.basename(new_xml_file)):
            print(old_xml_file)
            old_tree = ET.parse(old_xml_file)
            old_root = old_tree.getroot()
            tree = ET.parse(new_xml_file)
            root = tree.getroot()
            for member in root.findall('object'):
                print(member[0].text)
                #if member[0].text == "Time":
                value = (member[0].text,
                          int(member[4][0].text),
                          int(member[4][1].text),
                          int(member[4][2].text),
                          int(member[4][3].text)
                          )
                print(value)
                xlobject=ET.Element("object")
                xlbname=ET.SubElement(xlobject,"name")
                xlbname.text = value[0]
                pose=ET.SubElement(xlobject,"pose")
                pose.text="Unspecified"        
                truncate=ET.SubElement(xlobject,"truncated")
                truncate.text="0"        
                difficult=ET.SubElement(xlobject,"difficult")
                difficult.text="0"    
                bndbox=ET.SubElement(xlobject,"bndbox")
                tree = ET.ElementTree(root)        
                xlxmin=ET.SubElement(bndbox,"xmin")
                xlxmin.text=str(int(value[1]))         
                xlymin=ET.SubElement(bndbox,"ymin")
                xlymin.text=str(int(value[2]))        
                xlxax=ET.SubElement(bndbox,"xmax")
                xlxax.text=str(int(value[3]))        
                xlymax=ET.SubElement(bndbox,"ymax")
                xlymax.text=str(int(value[4]))
                old_root.append(xlobject)
            with open(r'E:\Cricket\Cricket\combined\\' +os.path.basename(new_xml_file), "w") as fh:
                tree = ET.ElementTree(old_root)
                r = old_tree.getroot()
                print (ET.tostring(r))
                fh.write(ET.tostring(r).decode("utf-8"))

你到底在挣扎哪一部分?它在生成的XML文件中添加了两次对象。好吧,你做了什么尝试来解决这个问题吗?我正在尝试,但直到现在我都没有成功!!您可能会发现以下文章很有用: