You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

读取Zip文件计算SHA256校验和失败,报UnicodeDecodeError错误

问题解决:计算Zip文件SHA256校验和时的UnicodeDecodeError

问题根源

你用文本模式打开了Zip二进制文件,Python会自动尝试用系统默认字符编码(比如charmap)解码字节流,但Zip文件包含无法被该编码识别的字节,导致解码失败抛出UnicodeDecodeError。哈希校验需要处理原始二进制数据,不需要解码为字符串。

解决方案

打开文件时指定二进制读取模式('rb'),这样读取的是原始bytes对象,直接传入hashlib.sha256即可,不会触发解码操作。

修正后的代码

import hashlib

with open(filename, 'rb') as f:
    data = f.read()
    hash_sha256 = hashlib.sha256(data).hexdigest()

大文件场景优化

如果Zip文件体积较大,一次性读取全部内容会占用过多内存,可以分块读取更新哈希:

import hashlib

hash_sha256 = hashlib.sha256()
with open(filename, 'rb') as f:
    # 每次读取4KB数据块更新哈希
    for chunk in iter(lambda: f.read(4096), b''):
        hash_sha256.update(chunk)
hash_sha256 = hash_sha256.hexdigest()

内容的提问来源于stack exchange,提问作者Willy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 14:43:09