需要筛选的文件夹有一个重复图片,但是图片名称不重复,我只是做个样例,可以筛选上千张图片:
运行代码:
import os,time,hashlib
def getmd5(file):
if not os.path.isfile(file):
return
fd = open(file,'rb')
md5 = hashlib.md5()
md5.update(fd.read())
fd.close()
return md5.hexdigest()
if __name__ == "__main__":
allfile = []
md5list = []
list_delete = []
start = time.time()
path = 'E:\\1' #需要筛选相似图片存放路径
for filepath,dir,filelist in os.walk(path):
for filename in filelist:
allfile.append(os.path.join(filepath,filename))
#根据MD5值比较
for photo in allfile:
print("进行到:", photo)
md5sum = getmd5(photo)
if md5sum not in md5list:
md5list.append(md5sum)
else:
list_delete.append(photo)
print(list_delete)
print('重复的照片有:',list_delete)
#删除图片
for i in range(len(list_delete)):
os.remove(list_delete[i])
运行结果:
........
进行到: E:\1\1.jpg
进行到: E:\1\3.jpg
['E:\\1\\3.jpg']
重复的照片有: ['E:\\1\\3.jpg']进程已结束,退出代码0
文件夹中只剩下两张不一样的图片,图像相似的已经删除掉。