设计一个小代码,供自己使用,也为大家写代码提供一点小灵感
主要是用在来自网络上的数据集,通过判断xml标注信息然后挑选出自己不想要的图片和标注文件
# coding=utf-8
import os
import os.path
import xml.dom.minidom
img_dir ='.\\images' #图片路径
xmlpath = ".\\test" #xml路径
files = os.listdir(xmlpath) # 得到文件夹下所有文件名称
a = []
for xmlFile in files: # 遍历文件夹
if not os.path.isdir(xmlFile): # 判断是否是文件夹,不是文件夹才打开
print("---------------------------")
print(xmlFile)
# xml文件读取操作
# 将获取的xml文件名送入到dom解析
dom = xml.dom.minidom.parse(os.path.join(xmlpath, xmlFile))
root = dom.documentElement
# 获取标签对name之间的值
name = root.getElementsByTagName("name")
# pose = root.getElementsByTagName(’pose’)
# print(len(name))
# 原始信息
print("原始信息")
for i in range(0, len(name)):
n = name[i]
n = n.firstChild.data
print(n)
if n == "background": #判别xml中name是否符合特定字符
a.append(xmlFile.split(".")[0])
elif n == "code spraying is normal":
a.append(xmlFile.split(".")[0])
str = '\n'
f1 = open( 'a.txt', 'w', encoding = "utf-8" ) #将符合的xml文件名写入a.txt
f1.write(str.join(a))
f1.close()
print('ok for txt_file')
print('*********************************************')
print(len(a))
print('*********************************************')
for i in a:
if os.path.exists(os.path.join(img_dir + "\\" + i+".jpg")) and os.path.exists(xmlpath + "\\" + i+".xml"): # 判断对应的jpg,xml是否都存在然后都删除
os.remove(os.path.join(img_dir + "\\" + i+".jpg"))
os.remove(os.path.join(xmlpath + "\\" + i + ".xml"))
print(img_dir + "\\" + i + ".jpg", "被删除")
print(xmlpath + "\\" + i + ".xml", "被删除")
print("finish all files")
下面是根据选出图片移动标签文件
# coding=utf-8
import os
import os.path
import shutil
imgpath = './images' # 图片路径
xmlpath = ".\\Annotations" # xml原始路径
xmlpath2 ="./a" # 保存文件夹
isExists = os.path.exists(str(xmlpath2))
if not isExists: # 判断如果文件不存在,则创建
os.makedirs(str(xmlpath2))
print(str(xmlpath2) + "目录创建成功")
files = os.listdir(imgpath) # 得到文件夹下所有文件名称
a = []
for img in files: # 遍历文件夹
if not os.path.isdir(img): # 判断是否是文件夹,不是文件夹才打开
print("---------------------------")
print(img)
imgname=os.path.splitext(img)[0]
imgjpeg=os.path.splitext(img)[1]
xmlname=imgname+".xml"
xml = os.path.join(xmlpath,xmlname)
shutil.move(xml, xmlpath2)
![](https://img-blog.csdnimg.cn/a1167d5dc33640ce9a8ba271e4908e05.jpeg)