批量修改并保存xml文件

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


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文件)