本代码的功能主要是通过对比两个文件夹中的文件名,删除另一个中不存在的文件。
输入:
(1)xml文件所在文件夹;
(2)图片文件所在文件夹;
功能:
如果图片文件夹中的某个文件对应的文件名不在xml所在的文件夹,则删除该图片文件
import os
import numpy as np
import cv2
import csv
def GetImgNameByEveryDir(file_dir,videoProperty):
FileNameWithPath = []
FileName = []
FileDir = []
# 示例:videoProperty=['.png','jpg','bmp']
for root, dirs, files in os.walk(file_dir):
for file in files:
if os.path.splitext(file)[1] in videoProperty:
FileNameWithPath.append(os.path.join(root, file)) # 保存路径
FileName.append(file[:-4]) # 保存名称
FileDir.append(root[len(file_dir):]) # 保存所在文件夹
return FileName,FileNameWithPath,FileDir
xmlDir = './Annotations/'
ImgDir = './JPEGImages/'
xml_FileName,xml_FileNameWithPath,xml_FileDir = GetImgNameByEveryDir(xmlDir,'.xml')
img_FileName,img_FileNameWithPath,img_FileDir = GetImgNameByEveryDir(ImgDir,'.jpg')
for k in range(len(img_FileName)):
img_file_name = img_FileName[k]
if img_file_name not in xml_FileName:
os.remove(img_FileNameWithPath[k])
print("Process Done...")