Ciao, io propongo questo:<br><br>import math<br>u='KMGTP'<br>#faccio una lista di numeri fino a 10**15<br>L=[3.14159 * 10**n for n in range(15)]<br>for x in L:<br>    n=int(math.log(x,1000))<br>    k=n<br>    x1=x/(10**(3*k))<br>
    print "%s %.1f %s"%(x,x1,u[k]+'B')<br><br>Che da come output:<br><br><br>>>> for x in L:<br>...     n=int(math.log(x,1000))<br>...     k=n<br>...     x1=x/(10**(3*k))<br>...     print "%s %.1f %s"%(x,x1,u[k]+'B')<br>
... <br>3.14159 3.1 KB<br>31.4159 31.4 KB<br>314.159 314.2 KB<br>3141.59 3.1 MB<br>31415.9 31.4 MB<br>314159.0 314.2 MB<br>3141590.0 3.1 GB<br>31415900.0 31.4 GB<br>314159000.0 314.2 GB<br>3141590000.0 3.1 TB<br>31415900000.0 31.4 TB<br>
314159000000.0 314.2 TB<br>3.14159e+12 3.1 PB<br>3.14159e+13 31.4 PB<br>3.14159e+14 314.2 PB<br><br>Se vuoi qualcosa di piu' compatto:<br>n=lambda x: int(math.log(x,1000))<br>T=["%.1f %s"%(x/(10**(n(x)*3)),u[n(x)]+'B') for x in L]<br>
>>> T<br>['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']<br>
<br>Se vuoi 1KB == 1024B metti 1024 al posto di mille in math.log<br><br>Ciao<br><div><font color="#888888"><br>Stefano</font></div><br><br><div class="gmail_quote">2011/1/11 Vittorio Zuccala' <span dir="ltr"><<a href="mailto:vittorio.zuccala@gmail.com">vittorio.zuccala@gmail.com</a>></span><br>
<blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">Buongiorno a tutti,<br>vi scrivo su un parere su un algoritmo...<br>Ho un file con una serie di numeri che in qualche modo recupero.<br>
Questi numeri rappresentano byte, Kb, Mb, Gb, Tb...<br>Vorrei trasformarli in modo leggibile.<br>

Ad esempio (posso immagazzinarli in un array, dizionario o altro... non importa):<br><br>172183142400=>172,1Gb<br>250057060352=>250,0Gb<br>132450=>132,4Kb<br><br>e cosė via.<br>L'operazione č di per sč semplice ma l'ho risolta con una serie di if.<br>


Se maggiore di 1000, dividi per mille, e mettici kb a fianco.<br>Se maggiore di 1000.000.....<br><br>Secondo voi c'č un modo pių elegante o meno "dispendioso"?<br>Grazie in anticipo...<br>
<br>_______________________________________________<br>
Python mailing list<br>
<a href="mailto:Python@lists.python.it">Python@lists.python.it</a><br>
<a href="http://lists.python.it/mailman/listinfo/python" target="_blank">http://lists.python.it/mailman/listinfo/python</a><br>
<br></blockquote></div><br>