编程语言
首页 > 编程语言> > Python脚本:批量改变xml文件的内容

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成功!')

标签:xml,name,批量,Python,firstChild,pedestrian,path,data
来源: https://blog.csdn.net/qq_41876456/article/details/120444182