一次获取filesize和md5散列,只读取

2024-03-28 22:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

如何打开一个文件,计算它的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)

但是,据我所知,这需要两次文件传递,效率可能会更高。你知道吗


Tags: 文件anreaddatasizedefhashfname
1条回答
网友
1楼 · 发布于 2024-03-28 22:42:59

无需扫描文件即可获得其长度。文件系统知道文件有多大。你知道吗

如果您坚持手动执行,请设置size = 0,然后在while循环内执行size += len(data)。你知道吗

当然你的getMD5Hash()现在是getMD5Hash_and_size()。你知道吗

相关问题 更多 >