import os,hashlib
md5_list=[]
class GetFile:
def get_md5(self,file):
if os.path.isfile(file):
f = open(file,'rb')
md5_obj = hashlib.md5()#获取一个md5加密算法对象
md5_obj.update(f.read())#读取文件,制定需要加密的字符串
hash_code = md5_obj.hexdigest()#获取加密后的16进制字符串
f.close()
md5=str(hash_code).lower()#转为小写
return md5
def alter_file(self,directory):
list_dir=os.listdir(directory)#获取指定目录下的文件
for item in list_dir:#遍历目录下的文件
files_md5=self.get_md5(item)
md5_list.append(files_md5)
md5_set=set(md5_list)
for i in md5_set:
#判断md5个数是否大于1,做去重
if md5_list.count(i)>1 and os.path.getsize(item)>10*pow(1024,2):#判断文件的大小是否大于10M
file=os.path.splitext(item)#将文件拆成文件名和后缀
file_new=files_md5+file[1]#命名一个新文件
try:
os.rename(item,file_new)#文件替换
print("符合的文件有{0},修改为{1}".format(item,file_new))
except FileExistsError as e:
print(e)
break
if __name__ == '__main__':
#指定一个目录
path="F:\Python\python"
GetFile().alter_file(path)