LeeZC's Blog

用python 正确计算大文件md5 值

python 计算文件的md5值很方便,但如果只是简单的把文件都入到内存中,大文件会导致问题,一般采用切片的方式分段计算,下面的几个函数可以很好的解决这个问题。

使用 hashlib

import hashlib

def md5_for_file(f, block_size=2**20):
    md5 = hashlib.md5()
    while True:
        data = f.read(block_size)
        if not data:
            break
        md5.update(data)
    return md5.digest()

def md5sum(filename, blocksize=65536):
    hash = hashlib.md5()
    with open(filename, "r+b") as f:
        for block in iter(lambda: f.read(blocksize), ""):
            hash.update(block)
    return hash.hexdigest()

使用 Crypto.Hash

import os
from Crypto.Hash import MD5

def get_file_checksum(filename):
    h = MD5.new()
    chunk_size = 8192
    with open(filename, 'rb') as f:
        while True:
            chunk = f.read(chunk_size)
            if len(chunk) == 0:
                break
            h.update(chunk)
    return h.hexdigest()

上面三个函数都能正确计算大文件md5 值

本文标签: python md5
本文编写于 1577548345000,技术更迭飞快,文中部分内容可能已经过时
本文网址: https://blog.leezc.cn/posts/2019-12-28-4278.html(转载注明出处)
如果你有任何建议或疑问可以在下面 留言
发表评论
相关推荐