1# Copyright 2014 The Chromium Authors. All rights reserved.
2# Use of this source code is governed by a BSD-style license that can be
3# found in the LICENSE file.
4
5import logging
6import os
7
8
9def GetRecursiveDiskUsage(path):
10  """Returns the disk usage in bytes of |path|. Similar to `du -sb |path|`."""
11
12  def get_size(filepath):
13    try:
14      return os.path.getsize(filepath)
15    except OSError:
16      logging.warning('File or directory no longer found: %s', filepath)
17      return 0
18
19  running_size = get_size(path)
20  if os.path.isdir(path):
21    for root, dirs, files in os.walk(path):
22      running_size += sum(
23          [get_size(os.path.join(root, f)) for f in files + dirs])
24  return running_size
25