"""
重复文件移除器, 根据md5值删除重复文件
根据每个文件md5值的唯一性,删除相同的文件。
程序运行过程,获取文件的md5值,把它放到集合里。
如果新的md5值在集合里,则把这文件删除。"""
import os
import hashlib
def getHash(filename):
try:
f1=open(filename,'rb')
line=f1.readline()
hash=hashlib.md5()
while(line):
hash.update(line)
line=f1.readline()
return hash.hexdigest()
except:
return "error"
def remove_repeat_file(path):
'''移除path路径下面所有的重复文件'''
md5set = set()
for item in os.walk(path): #返回的是三元组
for eachfile in item[2]:
filename = item[0] + os.sep + eachfile
md5=getHash(filename)
if md5 == 'error' :
print('读取',filename,'md5值发生错误')
continue
if md5 in md5set:
os.remove(filename)
else:
md5set.add(md5)
if __name__ == "__main__":
path = 'c:/test'
remove_repeat_file(path)