#! python3
'''
Python 获取字符串和文件的MD5值
'''
import hashlib
def get_file_md5(filename):
"""
计算文件的MD5值
"""
m = hashlib.md5() # 创建md5对象
with open(filename, 'rb') as fp:
while True:
data = fp.read(4096) # 每次读取4MB
if not data:
break
m.update(data) # 更新md5对象
return m.hexdigest()
if __name__ == '__main__':
# 计算字符串的MD5值
content = "hello"
md5hash = hashlib.md5(content.encode('utf8'))
md5 = md5hash.hexdigest()
print(md5) # 5d41402abc4b2a76b9719d911017c592
# 计算文件的MD5值: 本质是先将文件转为二进制文本,然后针对该文本做md5运算。
filename = r'test.xlsx'
with open(filename, 'rb') as fp: # 模式要用'rb'
data = fp.read() # 一次将文件全部读入内存
file_md5 = hashlib.md5(data).hexdigest() # 已经是byte不用encode
print(file_md5)
# 计算大文件的MD5值
filename = r'test.xlsx'
file_md5 = get_file_md5(filename)
print(file_md5)