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