利用文件的md5值查重并删除重复的文件

        整理数据,发现有些文件名虽然不一样,但是文件内容是一样的。所以使用MD5值进行查重,然后通过os.system调用shell脚本删除多余元素。

#code by yangdaxia

import hashlib
import os
from collections import Counter

def getFileMD5(filepath):
    '''
    :param filepath:
    :return: md5
    '''
    f = open(filepath,'rb')
    md5 = hashlib.md5()
    md5.update(f.read())
    hash = md5.hexdigest()
    f.close()
    return str(hash)

def checkRemove(path):

    files = []
    fileMd5s = []
    lines = os.listdir(path)

    for idx, file in enumerate(lines):
        Md5 = getFileMD5(path + file)
        fileMd5s.append(Md5)
        #print(idx, yl)
        files.append(file)

    tmp = dict(zip(files, fileMd5s))
    print('构建文件与MD5映射完毕!')
    chachong = Counter(fileMd5s)
    print('查重中......')
    for key, value in chachong.items():
        if int(value) >1:
            print(key, value)
            chongfu = [key2 for key2, value2 in tmp.items() if value2 ==key]
            print(chongfu)
            with open('chongfu.txt', 'a')as fw:
                fw.write(str(chongfu)[1:-1]+'\n')
            rmf = path+chongfu[-1]
            print(rmf)
            os.system('rm -v %s'%(rmf))
        
if __name__=='__main__':
    path = '/mnt/lustrenew/dataset/test/Image/guonei_test/Images/'
    checkRemove(path)
    

 

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yang_daxia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值