# -*- 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')