Python脚本009:批量改变xml文件的内容

由于标注时候的粗心大意,pedestrian被写的五花八门,因此标注生成的xml文件里的name节点就不统一,后续读入就会出错。
因此就需要统一更改name节点的pedestrian,如果不是pedestrian就改成pedestrian,简单但有效。

# coding:utf-8
# fuction:批量纠正节点<name/>的pedestrian
# date20210923
import os
import os.path
import xml.dom.minidom

# path="../xml/"
path = '/home/xl/WorkShop_Dataset/annores/ALL_People_Annotations/val/'
files = os.listdir(path)  # 得到文件夹下所有文件名称
s = []
for xmlFile in files:  # 遍历文件夹
    if not os.path.isdir(xmlFile):  # 判断是否是文件夹,不是文件夹才打开
        print(xmlFile)

        # xml读取操作

        # 将获取到的xml文件名送入到dom解析
        # 错误代码:dom=xml.dom.minidom.parse(xmlFile)
        dom = xml.dom.minidom.parse(os.path.join(path, xmlFile))
        root = dom.documentElement

        ###获取标签对name的值
        # xmin = root.getElementsByTagName('xmin')
        # ymin = root.getElementsByTagName('ymin')
        name = root.getElementsByTagName('name')


        # 修改相应标签的值
        for i in range(len(name)):
            if name[i].firstChild==None:
                break
            else:
                # a = name[i].firstChild.data
                # print(type(a))
                if name[i].firstChild.data != 'pedestrian':
                    print(name[i].firstChild.data)
                    name[i].firstChild.data = 'pedestrian'
                    print(name[i].firstChild.data)


                #if=='pedestrian' break
                #else
                #

        # for j in range(len(ymin)):
        #     print
        #     ymin[j].firstChild.data
        #     ymin[j].firstChild.data = 100
        #     print
        #     ymin[j].firstChild.data

        # 保存修改到xml文件中
        with open(os.path.join(path, xmlFile), 'w') as fh:
            dom.writexml(fh)
            print('恭喜,写入name成功!')
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值