【深度学习数据集】修改xml文件中文件夹地址

一、问题提出

上篇博客中,博主提到了,如何将图片文件随机打乱并批量命名。博主做了一个6分类的数据集,悲剧的是,博主忽略了文件的命名,导致每个类的文件名都是一样的。所以,用labeling软件制作成voc数据集时,会导致每个类的xml文件的filename属性是相同的,这是要解决的问题。

二、代码实现

#coding=utf-8
import os
import os.path
import xml.dom.minidom
 
path="H:\\dataset\\image\\example"
files=os.listdir(path)  #得到文件夹下所有文件名称
s=[]
for xmlFile in files:
    #遍历文件夹
    portion = os.path.splitext(xmlFile)
    if not os.path.isdir(xmlFile):
        #判断是否是文件夹,不是文件夹才打开
        # print (xmlFile)

        #xml文件读取操作

        #将获取的xml文件名送入到dom解析
        dom=xml.dom.minidom.parse(os.path.join(path,xmlFile))
        ###最核心的部分os.path.join(path,xmlFile),路径拼接,输入的是具体路径
        root=dom.documentElement
        name=root.getElementsByTagName('filename')
            #pose=root.getElementsByTagName('pose')
            #重命名class name
        for i in range(len(name)):
            # print (name[i].firstChild.data)
            print(xmlFile)
            if portion[1] ==".xml":           
                newname = portion[0]+".jpg"
                print(newname)
            name[i].firstChild.data=newname
            print (name[i].firstChild.data)

            #保存修改到xml文件中
        with open(os.path.join(path,xmlFile),'w',encoding='UTF-8') as fh:
            dom.writexml(fh)
            print('修改filename OK!')

三、注意事项 

1.这段代码不仅仅可以改xml文件,还可以改html,php等

2.保存修改到xml文件时,一定要在末尾加上encoding=‘UTF-8’,不然在使用数据集时会报错,提示

xml.etree.ElementTree.ParseError: not well-formed (invalid token)

with open(os.path.join(path,xmlFile),'w',encoding='UTF-8') as fh:

 

你可能感兴趣的:(python,数据集,人工智能,计算机视觉,bug)