在做检测时,下载的数据集中Annotations里的.xml文件的“path”值需要修为自己的图片保存地址,如下:
下面为下载后的原始
01017.jpg
需要修改后的路径地址为:
01017.jpg
下面给出了代码实现:
以python批量修改xml为参照,但该博客代码并未考虑同一文件夹下文件名长度不同的情况,我在原代码的基础上并作了修改,使得下面代码适用于任何情况。
#!/usr/bin/python
# -*- coding: UTF-8 -*-
import os
import os.path
from xml.etree.ElementTree import parse, Element
# .xml文件地址
path = "E:/keras-yolo3-master/VOCdevkit/VOC2007/Annotations/"
# 得到文件夹下所有文件名称
files = os.listdir(path)
s = []
# 遍历文件夹
for xmlFile in files:
# 判断是否是文件夹,不是文件夹才打开
if not os.path.isdir(xmlFile):
print(xmlFile)
pass
path = "E:/keras-yolo3-master/VOCdevkit/VOC2007/Annotations/"
newStr = os.path.join(path, xmlFile)
###最核心的部分,路径拼接,输入的是具体路径
dom = parse(newStr)
root = dom.getroot()
# 原代码为: part=xmlFile[0:7] 只获取文件名的前7个值
# 获得后缀.前的文件名
part = os.path.splitext(xmlFile)[0]
# 文件名+后缀
part1 = part + '.jpg'
# path里的新属性值:
newStr1 = 'E:/keras-yolo3-master/VOCdevkit/VOC2007/JPEGImages/' + part1
root.find('path').text = newStr1
# #打印输出
print('path after change')
dom.write(newStr, xml_declaration=True)
pass