微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

# coding:utf-8
# fuction:批量纠正节点<name/>的pedestrian
# date:20210923
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成功!')

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。