Python实战:python 获取指定文件的MD5值

在Python中,可以使用hashlib模块来计算文件的MD5值。MD5是一种常用的哈希算法,可以将任意长度的数据转换成固定长度的哈希值。计算文件的MD5值可以用于校验文件的完整性和一致性,以及检测文件是否被篡改。

计算大小一般的文件MD5值

import hashlib

# 文件路径
file_path = "D:\steverocket\CentOS7_back.zip"

def file_md5(file_name):
    """
    参数:文件名
    return: 获取zip文件的md5
    """
    with open(file_name, "rb") as f:
        content = f.read()
        m = hashlib.md5()
        m.update(content)
        return m.hexdigest()

print(file_md5(file_path))

输出结果:e0585a49d21452937141fff509811dd2

计算大文件MD5值

如果计算超大文件的md5值,可以使用分块读取,下面是一个示例代码,用于计算指定文件(300多MB的zip文件)的MD5值:

import hashlib

# 文件路径
file_path = "D:\steverocket\CentOS7.zip"

# 打开文件
with open(file_path, 'rb') as f:
    # 创建MD5对象
    md5_obj = hashlib.md5()

    # 读取文件内容,更新MD5对象
    while 1:
        data = f.read(4096)   # 每次读取4096字节
        if not data:
            break
        md5_obj.update(data)

# 获取MD5值
md5_value = md5_obj.hexdigest()
print(md5_value)

输出结果:e0585a49d21452937141fff509811dd2

如果我们换成计算CentOS7_back.zip文件的md5值,结果还是这个值。该文件是一个由gz文件解压后的zip文件,具体详情由来请参考:Python实战:python操作GZ文件,实现文件压缩与解压缩

在上面的代码中,首先定义了一个文件路径file_path,然后使用open()函数打开文件,并以二进制模式读取文件内容。接着,创建一个MD5对象md5_obj,使用update()方法不断更新MD5值,直到读取完整个文件。最后,使用hexdigest()方法获取MD5值的十六进制表示,并使用print()函数输出MD5值。

总结

本文介绍了如何使用Python计算文件的MD5值。具体实现方法是,使用hashlib模块中的md5()函数创建MD5对象,然后使用update()方法不断更新MD5值,最后使用hexdigest()方法获取MD5值的十六进制表示。如果需要计算大文件的MD5值,可以使用分块读取的方式,将文件分成多个块,每次读取一块数据,并更新MD5对象。

SteveRocket的博客_CSDN博客-Django进阶,Python进阶,网络&信息安全领域博主SteveRocket擅长Django进阶,Python进阶,网络&信息安全,等方面的知识https://blog.csdn.net/zhouruifu2015/


更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。

关于公众号的描述访问如下链接



关于Articulate“做一个知识和技术的搬运工。做一个终身学习的爱好者。做一个有深度和广度的技术圈。”一直以来都想把专业领域的技https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

SteveRocket

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

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

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

打赏作者

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

抵扣说明:

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

余额充值