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

猜你喜欢

转载自blog.csdn.net/sangky/article/details/80931040