Barra de progreso en ASCII

Chema Cortes ch3m4 en ch3m4.org
Jue Feb 19 11:43:25 CET 2004


Oscar Merchan escribió:

> Esta es la cuestion que hoy me trae por aqui. ¿ Alguien ha hecho o ha probado alguna barra de progreso en ASCII ?.
> 
> [...] la barra cuando va subiendo, me rellena tres lineas en vez de lo que ocupa la barra.
> 
> def progress(ratio, length=40, col=1, cols=("lgreen", "red", "blue"),
>             nocol="=."):
>     if ratio > 10:
>         ratio = 10
>     elchar, leftchar = nocol
>     elapsed = int(round(ratio*length))
>     left = length - elapsed
>     bar = elchar*elapsed + leftchar*left
>     bar = bar[:length]
>     if col:
>         c_elapsed, c_left, perc = cols
>         bar = color(' '*elapsed, "gray", c_elapsed)
>         bar = bar + color(' '*left, "gray", c_left)
>     else:
>         bar = elchar*elapsed + leftchar*left
>     return bar
> 
> print "\033[5;2H"+color("0%","white")
> print "\033[5;66H"+color("100%","white")
> print "\033[5;5H"+progress(progreso)

Lo que te pasa es que el comando 'print' añade un salto de línea. Mejor 
si pones una coma al final o, mucho mejor, emplea 'sys.stdout.write()' 
para sacer la barra.

-- 
Res publica non dominetur




Más información sobre la lista de distribución Python-es