15 lines
395 B
Python
15 lines
395 B
Python
def human_size(num_bytes: int | None) -> str:
|
|
if not num_bytes:
|
|
return ""
|
|
|
|
units = ["B", "KB", "MB", "GB", "TB", "PB"]
|
|
size = float(num_bytes)
|
|
|
|
for unit in units:
|
|
if size < 1024 or unit == units[-1]:
|
|
s = f"{size:.3f}".rstrip("0").rstrip(".")
|
|
if "." not in s:
|
|
s += ".0"
|
|
return f"{s} {unit}"
|
|
size /= 1024
|