我想创建一个 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()
我是一名优秀的程序员,十分优秀!