[Python] Numero to byte
Stefano Dal Pra
s.dalpra a gmail.com
Mer 12 Gen 2011 19:47:42 CET
Ciao, io propongo questo:
import math
u='KMGTP'
#faccio una lista di numeri fino a 10**15
L=[3.14159 * 10**n for n in range(15)]
for x in L:
n=int(math.log(x,1000))
k=n
x1=x/(10**(3*k))
print "%s %.1f %s"%(x,x1,u[k]+'B')
Che da come output:
>>> for x in L:
... n=int(math.log(x,1000))
... k=n
... x1=x/(10**(3*k))
... print "%s %.1f %s"%(x,x1,u[k]+'B')
...
3.14159 3.1 KB
31.4159 31.4 KB
314.159 314.2 KB
3141.59 3.1 MB
31415.9 31.4 MB
314159.0 314.2 MB
3141590.0 3.1 GB
31415900.0 31.4 GB
314159000.0 314.2 GB
3141590000.0 3.1 TB
31415900000.0 31.4 TB
314159000000.0 314.2 TB
3.14159e+12 3.1 PB
3.14159e+13 31.4 PB
3.14159e+14 314.2 PB
Se vuoi qualcosa di piu' compatto:
n=lambda x: int(math.log(x,1000))
T=["%.1f %s"%(x/(10**(n(x)*3)),u[n(x)]+'B') for x in L]
>>> T
['3.1 KB', '31.4 KB', '314.2 KB', '3.1 MB', '31.4 MB', '314.2 MB', '3.1 GB',
'31.4 GB', '314.2 GB', '3.1 TB', '31.4 TB', '314.2 TB', '3.1 PB', '31.4 PB',
'314.2 PB']
Se vuoi 1KB == 1024B metti 1024 al posto di mille in math.log
Ciao
Stefano
2011/1/11 Vittorio Zuccala' <vittorio.zuccala a gmail.com>
> Buongiorno a tutti,
> vi scrivo su un parere su un algoritmo...
> Ho un file con una serie di numeri che in qualche modo recupero.
> Questi numeri rappresentano byte, Kb, Mb, Gb, Tb...
> Vorrei trasformarli in modo leggibile.
> Ad esempio (posso immagazzinarli in un array, dizionario o altro... non
> importa):
>
> 172183142400=>172,1Gb
> 250057060352=>250,0Gb
> 132450=>132,4Kb
>
> e cosė via.
> L'operazione č di per sč semplice ma l'ho risolta con una serie di if.
> Se maggiore di 1000, dividi per mille, e mettici kb a fianco.
> Se maggiore di 1000.000.....
>
> Secondo voi c'č un modo pių elegante o meno "dispendioso"?
> Grazie in anticipo...
>
> _______________________________________________
> Python mailing list
> Python a lists.python.it
> http://lists.python.it/mailman/listinfo/python
>
>
-------------- parte successiva --------------
Un allegato HTML č stato rimosso...
URL: <http://lists.python.it/pipermail/python/attachments/20110112/e8905637/attachment.html>
Maggiori informazioni sulla lista
Python