重复文件移除模块

重复文件移除模块

"""
   重复文件移除器,  根据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)

 

李兴球

李兴球的博客是Python创意编程原创博客

评论已关闭。