[Python] Numero to byte

lordkrandel lordkrandel a gmail.com
Mer 12 Gen 2011 10:54:15 CET


#On 11/01/2011 15.00, Lorenzo Sutton wrote:
#> def bytesToHuman (b,factor=1024.):
#> units = ['bytes', 'KB', 'MB', 'GB', 'TB', 'PB']
#> for i in xrange (1,len (units)+1):
#>     if b < factor ** i or i >= len(units):
#>         return ('%.1f %s') % ((b/(factor **(i-1))),units[i-1])
#
# Che ne dici di un po' di magia
# Dimmi se funziona

def f(
    bytes,
    factor=1024,
    labels=['', 'Ki', 'Mi', 'Gi', 'Ti', 'Pi'],
    precision=4 
):
    for x,y in map(
        lambda x: ( 
            factor**(x[0]+1),
            ('%.' + str(precision) + 'lf %sB') % (bytes / factor**x[0], x[1])
        ),
        enumerate(labels)
    ):
        if (bytes < x) or (y == labels[-1]):
            return y

# Test
for x in range(16):
    y = 512.12*(10**x)
    print f(y)

-- 
Wyrmskull


Maggiori informazioni sulla lista Python