因为项目做数据集,把图片放在以中文名命名的文件夹中,导致进行数据扩充时报错。
如图,之前红框内的是中文名,现在要改成英文
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成功!')
网友评论