[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