Add humanize_bytes function to library

This commit is contained in:
Kim Silkebækken 2013-01-17 20:02:04 +01:00
parent 07f1b7d697
commit 245be99307
1 changed files with 22 additions and 0 deletions

View File

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
from math import log
unit_list = zip(['', 'k', 'M', 'G', 'T', 'P'], [0, 0, 1, 2, 2, 2])
def humanize_bytes(num, suffix='B', binary_prefix=False):
'''Return a human friendly byte representation.
Modified version from http://stackoverflow.com/questions/1094841
'''
if num == 0:
return '0 ' + suffix
div = 1000 if binary_prefix else 1024
exponent = min(int(log(num, div)), len(unit_list) - 1)
quotient = float(num) / div ** exponent
unit, decimals = unit_list[exponent]
if unit and binary_prefix:
unit += 'i'
return '{{quotient:.{decimals}f}} {{unit}}{{suffix}}'\
.format(decimals=decimals)\
.format(quotient=quotient, unit=unit, suffix=suffix)