目标检测中如何使用python语言批量处理xml文件,简洁教程

计算机视觉领域是一个比较热门的研究领域,其中涉及到目标检测,实例分割,语义分割等。这里面不可避免地就会涉及到标签修改的问题,如果标签文件少,且一张图里面只有一个目标的话,修改起来还是相对容易,但是实际情况都不是这样,可能一个标签文件里面会存在八九个,甚至十几个object,这就需要用到批量修改的功能,我习惯使用pycharm编辑器进行处理,所以也是用python语言来实现功能。话不多说,直接上代码,首先引入必要的包和库

import xml.dom.minidom # 文档对象类型接口的最小实现

for i in range(0,100,5): #

      path1="xxx"+str(i)+'.xml'

      path2="xxx"+str(i+1)+'.xml'

      path3="xxx"+str(i+2)+'.xml'

      path4="xxx"+str(i+3)+'.xml'

      path5="xxx"+str(i+4)+'.xml'

      path6="xxxz"+str(i)+'.xml'

      dom1 = xml.dom.minidom.parse(path1) #加载xml文件
      root1 = dom1.documentElement  # 获取到根节点
      names1 = root1.getElementsByTagName("name") #获取名字为name的根节点属性下面       的值
      a1 = names1[0].firstChild.data  # 将第一组name属性的值赋值给a1

      dom2 = xml.dom.minidom.parse(path2)
      root2 = dom2.documentElement  # 获取到根节点
      names2 = root2.getElementsByTagName("name")
      a2 = names2[0].firstChild.data  # 将第二组name属性的值赋值给a1

      dom3 = xml.dom.minidom.parse(path3)
      root3 = dom3.documentElement  # 获取到根节点
      names3 = root3.getElementsByTagName("name")
      a3 = names3[0].firstChild.data

     dom4 = xml.dom.minidom.parse(path4)
      root4 = dom4.documentElement  # 获取到根节点
      names4 = root4.getElementsByTagName("name")
      a4 = names4[0].firstChild.data

      dom5 = xml.dom.minidom.parse(path5)
      root5 = dom5.documentElement  # 获取到根节点
      names5 = root5.getElementsByTagName("name")
      a5 = names5[0].firstChild.data

     dom6 = xml.dom.minidom.parse(path6)
      root6 = dom6.documentElement  # 获取到根节点
      names6= root6.getElementsByTagName("name")
      names6[0].firstChild.data = a1
      names6[1].firstChild.data = a2
      names6[2].firstChild.data = a3
      names6[3].firstChild.data = a4
      names6[4].firstChild.data = a5

  with open(path1, 'w', encoding='utf-8') as f: #打开对应的xml文件
        dom1.writexml(f, addindent='  ', encoding='utf-8') #将修改后的数据写入对应的xml文件
    with open(path1, 'w', encoding='utf-8') as f:
        dom2.writexml(f, addindent='  ', encoding='utf-8')
    with open(path2, 'w', encoding='utf-8') as f:
        dom3.writexml(f, addindent='  ', encoding='utf-8')
    with open(path3, 'w', encoding='utf-8') as f:
        dom4.writexml(f, addindent='  ', encoding='utf-8')
    with open(path4, 'w', encoding='utf-8') as f:
        dom5.writexml(f, addindent='  ', encoding='utf-8')
    with open(path5, 'w', encoding='utf-8') as f:

dom6.writexml(f, addindent='  ', encoding='utf-8')
    with open(path6, 'w', encoding='utf-8') as f:

以上代码实现的功能就是,假设有100个xml文件,每次读取5个xml文件,取出其中name的值,把这五个name 的属性值写入到另外一个文件夹中的第一个名字叫0.xml的文件中

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值