批量修改并保存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成功!')
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,615评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,277评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,094评论 2 7