[Python] Numero to byte

lordkrandel lordkrandel a gmail.com
Mer 12 Gen 2011 12:25:19 CET


On 12/01/2011 12.15, Daniele Varrazzo wrote:
> On Wed, 12 Jan 2011 12:02:57 +0100, lordkrandel<lordkrandel a gmail.com>
> wrote:
>>      for n, label in map( lambda k: ( factor**k[0], k[1] ), enumerate(labels,1) ):
> 
> Forse sarebbe meglio
>      for i, label in enumerate(labels, 1):
>          n = factor ** i
>          ...

M'ha preso un evidente attacco di oneliner-ite

>> return ('%.' + str(precision) + 'lf %s') % (bytes * factor / n, label)
>
> potrebbe essere scritto:
> return ('%.*lf %s') % (precision, bytes * factor / n, label)

# Wow! Grazie!!! Quante cose s'imparano (leggendo al posto giusto). Tested!
# Ora č molto pių carino e pythoneggiante :)

def f( bytes, factor, labels, precision ):
    for i, label in enumerate(labels,1):
        n = factor ** i
        if (bytes < n) or (label == labels[-1]):
            return ('%.*lf %s') % (precision, bytes * factor / n, label)

def f_test():
    for x in range(22):
        y = 512*(10**x)
        print       f(y, 1024, ('bytes', 'KiB', 'MiB', 'GiB', 'TiB', 'PiB'), 4)
        print '  ', f(y, 1000, ('bytes', 'KB',  'MB',  'GB',  'TB',  'PB' ), 2)
f_test()




-- 
Wyrmskull


Maggiori informazioni sulla lista Python