美文网首页
批量修改并保存xml文件

批量修改并保存xml文件

作者: 花卷呀花卷 | 来源:发表于2021-04-15 10:28 被阅读0次

    因为项目做数据集,把图片放在以中文名命名的文件夹中,导致进行数据扩充时报错。
    如图,之前红框内的是中文名,现在要改成英文


    image.png

    修改思路:
    1.打开放xml的文件夹
    2.获取相应节点标签的值
    3.对值进行更改,其中路径更改使用正则替换
    4.保存xml文件

    # coding:utf-8
    import re
    import os
    import os.path
    import xml.dom.minidom
    
    # path="../xml/"
    path = '..\create-dataset\examples\ladder\Annotations'
    files = os.listdir(path)  # 得到文件夹下所有文件名称
    s = []
    for xmlFile in files:  # 遍历文件夹
    
        if not os.path.isdir(xmlFile):  # 判断是否是文件夹,不是文件夹才打开
    
            # xml读取操作
    
            # 将获取到的xml文件名送入到dom解析
            # 错误代码:dom=xml.dom.minidom.parse(xmlFile)
            dom = xml.dom.minidom.parse(os.path.join(path, xmlFile))
            root = dom.documentElement
    
            ###获取标签对folder/path之间的值
            folder = root.getElementsByTagName('folder')
            pathNode = root.getElementsByTagName('path')
    
            # 修改相应标签的值
            for i in range(len(folder)):
                print(folder[i].firstChild.data)
                a = folder[i].firstChild.data
                print(type(a))
                folder[i].firstChild.data = 'ladderImages'
                print(folder[i].firstChild.data)
    
            for j in range(len(pathNode)):
                print(pathNode[j].firstChild.data)
                string = pathNode[j].firstChild.data
                pathNode[j].firstChild.data = re.sub('梯子', 'ladderImages', string)
                print(pathNode[j].firstChild.data)
    
            # 保存修改到xml文件中
            with open(os.path.join(path, xmlFile), 'w') as fh:
                dom.writexml(fh)
                # root.write(fh)
                print('恭喜,写入folder/path成功!')
    

    相关文章

      网友评论

          本文标题:批量修改并保存xml文件

          本文链接:https://www.haomeiwen.com/subject/uihdlltx.html