在深度学习的实践中,我们通常都会下载公开数据集,标注数据通常都存为xml文件,里面的path通常都是图片在本机中的路径,如果我们想直接用这些数据集,就得在自己的电脑上建立一个相同的目录,但这样显然很不方便,况且如果是在linux和windows不同平台上就更尴尬了。本着自己动手丰衣足食的原则,我们可以用python写个代码,方便批量修改path中的路径。
##修改xml文件中的<path>,与实际数据路径对应
##author:leo
# coding=utf-8
import os
import os.path
import xml.dom.minidom
file_path = "./data/VOCdevkit2007/VOC2007/Annotations"
files = os.listdir(file_path) # 得到文件夹下所有文件名称
s = []
for xmlFile in files: # 遍历文件夹
if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开
print(xmlFile)
# xml文件读取操作
# 将获取的xml文件名送入到dom解析
dom = xml.dom.minidom.parse(os.path.join(file_path, xmlFile)) ###最核心的部分,路径拼接,输入的是具体路径
root = dom.documentElement
# 获取标签对path之间的值
original_path = root.getElementsByTagName('path')
# 原始信息
p0=original_path[0]
path0=p0.firstChild.data #原始路径
print(path0)
# 修改
jpg_name=path0.split('/')[-1] #获取图片名
modify_path=file_path+'/'+jpg_name #修改后path
p0.firstChild.data=modify_path
# 保存修改到xml文件中
with open(os.path.join(file_path, xmlFile), 'w') as fh:
dom.writexml(fh)
print('修改path OK!')
可以把path改为任意自己想存放的路径,并且我采用的是相对路径,这样后续使用起来是十分方便的!
需要注意的是如果路径中含有中文或其他非法字符,程序不会报错提示,但修改后的xml文件打开会为空。