#删除pic_dir中比txt_dir多出的文件 pic_dir = '/media/lwf/KINGSTON/JPEGImages' # 你的图片文件夹路径 txt_dir = '/media/lwf/KINGSTON/苹果数据集/txt' # 你的标签文件夹路径
JPEGImages中文件后缀名有.jpg和.png,共9255个文件。
txt中文件后缀名有.txt,共6190个文件。
txt中的文件除去后缀名在JPEGImages中都能找到。
现在要删除JPEGImage中比txt文件夹中多出的文件。
代码实现如下:
# encoding:utf-8
import os
import os.path
#删除pic_dir中比txt_dir多出的文件
pic_dir = '/media/lwf/KINGSTON/JPEGImages' # 你的图片文件夹路径
txt_dir = '/media/lwf/KINGSTON/苹果数据集/txt' # 你的标签文件夹路径
def txt(rootdir):
a = []
for parent, dirnames, filenames in os.walk(rootdir):
for filenames in filenames:
filenames = filenames.split('.') [0] #获取无后缀名的文件名称
a.append(filenames)
return a
def pic(rootdir):
b = []
for parent, dirnames, filenames in os.walk(rootdir):
for filenames in filenames:
filenames = filenames.split('.') [0] #获取无后缀名的文件名称
b.append(filenames)
return b
if __name__ == '__main__':
txt_set = txt(txt_dir)
txt_set = set(txt_set)#删除txt_set中的重复
pic_set = pic(pic_dir)
pic_set = set(pic_set)#删除pic_set中的重复
# comp=txt_set-pic_set
comp = pic_set - txt_set # 图片比标注多时,进行做差
print("ok")
print(len(comp))
for item in comp:
# 删去这些无标注的图片
for root,dirs,files in os.walk(pic_dir):
for file in files:
filename = file.split('.')[0] # 获取无后缀名的文件名称
if item == filename:
os.remove(pic_dir + '/' + file)
# file = pic_dir + '/' + item + '.png' #删除pic_dir中多出的文件
# if os.path.exists(file):
# os.remove(file)
# print(file)
得到的结果:
速度可能有点慢哈哈,欢迎小伙伴能提出更快速的方法!