如何打开一个文件,计算它的md5散列和文件大小,同时只扫描一次文件?你知道吗
现在我在做:
def getMD5Hash(fname):
""" Returns an md5 hash
"""
try:
with open(fname,'rb') as fo:
md5 = hashlib.md5()
chunk_sz = md5.block_size * 128
data = fo.read(chunk_sz)
while data:
md5.update(data)
data = fo.read(chunk_sz)
md5hash = base64.urlsafe_b64encode(md5.digest()).decode('UTF-8').rstrip('=\n')
except IOError:
md5hash = None
return md5hash
size = os.path.getsize(fname)
hash = getMD5Hash(fname)
但是,据我所知,这需要两次文件传递,效率可能会更高。你知道吗
无需扫描文件即可获得其长度。文件系统知道文件有多大。你知道吗
如果您坚持手动执行,请设置
size = 0
,然后在while
循环内执行size += len(data)
。你知道吗当然你的
getMD5Hash()
现在是getMD5Hash_and_size()
。你知道吗相关问题 更多 >
编程相关推荐