python md5去重加密

1、背景:
网络爬虫下载的文件,需要去重,选择python 的hashlib 或者md5计算hash值去重
2、实测:
一般对文件计算md5采用的方法是使用命令行

md5sum path/filename

python中试下那类似功能的时使用md5(python 2.5之前和hashlib(python2.5之后)
最简单的实现:

#!/usr/bin/env python
#coding : utf-8

import sys
import hashlib

def md5sum(filename):
    file_object = open(filename, 'rb')
    file_content = file_object.read()
    file_object.close()
    file_md5 = hashlib.md5(file_content)
    return file_md5

if __name__ == "__main__":
    file_md5 = md5sum(sys.argv[1])
    print file_md5.hexdigest()

注意,需要以二进制的方式读入文件,若写成hashlib.md5(filename),则会变成对字符串filename计算md5

另外对较大文件进行校验,一次性读入太大内容,导致性能低下,故一般读取部分进行处理。

# 大文件的MD5值
    def getFileMd5(self, filename):
        if not os.path.isfile(filename):
            return
        myhash = hashlib.md5()
        f = file(filename, 'rb')
        while True:
            b = f.read(8096)
            if not b:
                break
            myhash.update(b)
        f.close()
        return myhash.hexdigest()

每次读取8096字节的内容,使用myhash.update(b)进行累计。

参考:https://www.cnblogs.com/zhjsll/p/5897443.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值