python对文件夹下的照片查找并删除重复的照片
针对图片上传的安卓项目,对其上传到后台重复上传同样的照片进行处理
通过文件的MD5值进行去重
# -*- coding:utf-8 -*-
# 将代码文件放到,要删除重复的文件或图片所包含的目录中运行
import os
import hashlib
# 设置文件目录
fileDir = './'
def fileDeduplication(DIR):
fileDeduplication = len([name for name in os.listdir(DIR) if os.path.isfile(os.path.join(DIR, name))])
return (fileDeduplication)
def md5Sum(fileName):
f = open(fileDir+'/'+fileName, 'rb')
md5 = hashlib.md5()
while True:
fb = f.read(8096)
if not fb:
break
md5.update(fb)
f.close()
return (md5.hexdigest())
def delFile():
all_md5 = {}
dir = os.walk(fileDir)
for i in dir:
for tlie in i[2]:
if md5Sum(tlie) in all_md5.values():
os.remove(fileDir+'/'+tlie)
print(tlie)
else:
all_md5[tlie] = md5Sum(tlie)
if __name__ == '__main__':
numberOfFiles = fileDeduplication(fileDir)
print('\n*********去重前共有多少文件***********\n')
print('【', numberOfFiles, '】个文件')
print('\n**************结束分割线************************\n\n')
print('\n*********删除重复文件***********\n')
print('请稍等\n正在删除重复文件...\n')
delFile()
print('\n**************结束分割线************************\n\n')
print('\n\n*********去重后剩多少文件***********\n')
print('【', fileDeduplication(fileDir), '】个文件')
print('\n**************结束分割线************************\n\n')
print('\n\n*********统计共删除多少文件***********\n')
print('【', numberOfFiles - fileDeduplication(fileDir), '】个文件')
print('\n**************结束分割线************************\n\n')
运行结果
*********去重前共有多少文件***********
【 61 】个文件
**************结束分割线************************
*********删除重复文件***********
请稍等
正在删除重复文件...
**************结束分割线************************
*********去重后剩多少文件***********
【 61 】个文件
**************结束分割线************************
*********统计共删除多少文件***********
【 0 】个文件
**************结束分割线************************