在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对象。
更多资料 · 微信公众号搜索【CTO Plus】关注后,获取更多,我们一起学习交流。
关于公众号的描述访问如下链接