blob: abdd821c985b21be3a065741927ea77468cce105 [file] [log] [blame]
# Copyright 2014 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
import logging
# pylint: disable=E0611
from hashlib import sha256
from mopy.memoize import memoize
_logging = logging.getLogger()
@memoize
def file_hash(filename):
"""Returns a string representing the hash of the given file."""
_logging.debug("Hashing %s ...", filename)
with open(filename, mode='rb') as f:
m = sha256()
while True:
block = f.read(4096)
if not block:
break
m.update(block)
_logging.debug(" => %s", m.hexdigest())
return m.hexdigest()