上一篇写了如何批量修改文件名,但是第一次总有像我这种终极小白绕弯路的时候,比如标注前忘记改图片名&在Windows下标注的图片拿到Linux下训练。。。于是乎废了老大力气标注完的xml可能长这样
于是乎又一波批量改path和filename的工程开始了
经过上一篇博客已经学会了换外壳
接下来换内脏
首先是path
import xml.dom.minidom
import os
path='/home/boot/darknet/scripts/VOCdevkit/VOC2018/Annotations' # xml文件存放路径
sv_path='/home/boot/darknet/scripts/VOCdevkit/VOC2018/Annotations1' # 修改后的xml文件存放路径
files=os.listdir(path)
for xmlFile in files:
dom=xml.dom.minidom.parse(os.path.join(path,xmlFile)) #打开xml文件,送到dom解析
root=dom,documentElement #得到文档元素对象
item=root.getElementsByTagName('path') #获取path这一node名字及相关属性值
for i in item:
i.firstchild.data='/home/boot/darknet/scripts/VOCdevkit/VOC2018/JPEGImages' #xml文件对应的图片路径
with open(os.path.join(sv_path,xmlFile),'w') as fh:
dom.writexml(fh)
接下来是filename,改完xml文件名后,只需提取xml文件名加上后缀就可以了
import xml.dom.minidom
import os
path='/home/boot/darknet/scripts/VOCdevkit/VOC2018/Annotations' # xml文件存放路径
sv_path='/home/boot/darknet/scripts/VOCdevkit/VOC2018/Annotations1' # 修改后的xml文件存放路径
files=os.listdir(path)
for xmlFile in files:
dom=xml.dom.minidom.parse(os.path.join(path,xmlFile)) #打开xml文件,送到dom解析
root=dom,documentElement #得到文档元素对象
item=root.getElementsByTagName('path') #获取path这一node名字及相关属性值
a,b=os.path.splitext(xmlFile) #分离出文件名a
for i in item:
i.firstchild.data=a + '.jpg'
with open(os.path.join(sv_path,xmlFile),'w') as fh:
dom.writexml(fh)
修改之后就得到这样啦
在此感谢“凌空的桨”傅大腿的不厌其烦,未来应该还会有很多出镜率哈哈哈