document-processor/app/utils/filesize.py

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