看代码段1 --这个代码段只适合删除标注文件为空白的情况下,来删除对应文件。大部分情况下标注文件不可能是空白的,只是没有Object而已,所以需要解析xml文件,从而判断图像中是否具有目标,这部分将放在代码段二中给出。

import os#python当中一个常用的系统的库

image_dir = "data/images"#图片的路径。
label_dir = "data/labels"#标注信息的路径
labelnames = os.listdir(label_dir)#创建一个列表用于接受标注路径上的标注文件的名字,并且以列表形式进行呈现




for labelname in labelnames:#在标注文件的列表上进行遍历
    label = os.path.join(label_dir,labelname)#将标注文件的相对路径给出来
    # print(label)
    labelread = open(label,'r')#读取标注信息文件
    contens = labelread.readlines()#一次性全读出

    if contens:#如果标注信息里面有类容
        print("true"+label)
    else:#否则
        print("none"+label)
        fropath = (labelname.split(".")[0])#将标注文件以.分割一次,并且取出下标为O的部分
        path = fropath+".png"#找到空标注文件的图片名称
        image_path = os.path.join(image_dir,path)#找到空标注文件的图像路径
        os.remove(image_path)#移除图片
        labelread.close()#将读的文件关闭,这里必须关闭
        os.remove(label)#移除空标注文件

 代码段2-解析xml文件并且判断图像中是否含有目标

import os#python当中一个常用的系统的库
import xml.etree.ElementTree as ET


image_dir = "data/images"#图片的路径。
label_dir = "data/labels"  #标注信息的路径
labelnames = os.listdir(label_dir)#创建一个列表用于接受标注路径上的标注文件的名字,并且以列表形式进行呈现
for labelname in labelnames:#在标注文件的列表上进行遍历
    label = os.path.join(label_dir, labelname)  # 将标注文件的相对路径给出来
    tree = ET.ElementTree(file=label) # 获的xml 文件并且其抽象成tree对象
    count = 0 #定义变量 count 用于 观察是文件中是否存在 object 元素
    for elem in tree.iter(tag='object'):#对xml 中的元素进行遍历
        count = count + 1 #文件中有,就+1
    if 0 == count:#判断count 是否为0 为0的话就需要删除对应的xml文件和图片
        fropath = (labelname.split(".")[0])
        path = fropath + ".png"
        image_path = os.path.join(image_dir, path)
        os.remove(image_path)
        os.remove(label)
        print(labelname+'已经删除')
        print(path+'已经删除')

 

 代码段三—常用的用于分割的方法

s= 'www.dod.com.cn'
# 默认分隔符
print(s.split())
#  . 分割
print(s.split('.'))
#  分割一次   2次
print(s.split('.',1))
print(s.split('.',2))
# 取出被 . 分割的下标为1的字符串
print(s.split('.',2)[1])
# 分割最多次实际与不加参数一样(默认分割富一样)
print(s.split('.',-1))
#分割三次并将分割的字符串保存到三个文件内
s1,s2,s3= s.split('.',2)
print(s1)
print(s3)
print(s2)