Skip to main content
 首页 » 编程设计

python之创建 ZipFile 的 MD5 散列

2025年05月04日9zengkefu

我想创建一个 ZipFile 的 MD5 散列,而不是其中一个文件的散列。但是,ZipFile 对象不容易转换为流。

from hashlib import md5 
from zipfile import ZipFile 
 
zipped = ZipFile(r'/Foo/Bar/Filename.zip') 
hasher = md5() 
hasher.update(zipped) 
 
return hasher.hexdigest() 

以上代码产生错误:TypeError: must be convertible to a buffer, not ZipFile。

是否有直接的方法将 ZipFile 转换为流?

这里没有安全问题,我只需要一种快速简便的方法来确定我之前是否看过某个文件。 hash(zipped) 工作正常,但如果可能,我想要更健壮的东西。

请您参考如下方法:

只需将 ZipFile 作为普通文件打开即可。以下代码适用于我的机器。

from hashlib import md5 
m = md5() 
with open("/Foo/Bar/Filename.zip", "rb") as f: 
    data = f.read() #read file in chunk and call update on each chunk if file is large. 
    m.update(data) 
    print m.hexdigest()