| 1 |
"""
|
| 2 |
|
| 3 |
GetTreeSize
|
| 4 |
|
| 5 |
Just testing the new scandir.ENOENT
|
| 6 |
|
| 7 |
|
| 8 |
"""
|
| 9 |
|
| 10 |
import scandir
|
| 11 |
|
| 12 |
def get_tree_size(path):
|
| 13 |
"""Return total size of files in given path and subdirs."""
|
| 14 |
total = 0
|
| 15 |
for entry in scandir.scandir(path):
|
| 16 |
if entry.is_dir(follow_symlinks=False):
|
| 17 |
total += get_tree_size(entry.path)
|
| 18 |
else:
|
| 19 |
total += entry.stat(follow_symlinks=False).st_size
|
| 20 |
return total
|
| 21 |
|
| 22 |
|
| 23 |
def human(size):
|
| 24 |
|
| 25 |
B = "B"
|
| 26 |
KB = "KB"
|
| 27 |
MB = "MB"
|
| 28 |
GB = "GB"
|
| 29 |
TB = "TB"
|
| 30 |
UNITS = [B, KB, MB, GB, TB]
|
| 31 |
HUMANFMT = "%f %s"
|
| 32 |
HUMANRADIX = 1024.
|
| 33 |
|
| 34 |
for u in UNITS[:-1]:
|
| 35 |
if size < HUMANRADIX : return HUMANFMT % (size, u)
|
| 36 |
size /= HUMANRADIX
|
| 37 |
|
| 38 |
return HUMANFMT % (size, UNITS[-1]) |