instalar - install tabulate python mac
Cómo reescribir la salida en el terminal (4)
Tengo una secuencia de comandos de Python y quiero que muestre un número creciente de 0 a 100% en el terminal. Sé cómo imprimir los números en el terminal, pero ¿cómo puedo "reescribirlos" para que 0 se convierta en 1, 1 en 2, y así sucesivamente hasta 100?
Basado en share , pero sin el controlador de terminal:
import time
import sys
for i in range(100):
sys.stdout.write("Downloading ... %s%%/r" % (i))
sys.stdout.flush()
time.sleep(1)
Probado en el terminal de GNOME (Linux) y la consola de Windows.
Consejo: No ejecute este ejemplo en el editor IDLE.
Esta receta here debería resultar útil. Usando ese módulo como tc, el siguiente código hace lo que quieres:
from tc import TerminalController
from time import sleep
import sys
term = TerminalController()
for i in range(10):
sys.stdout.write("%3d" % i)
sys.stdout.flush()
sleep(2)
sys.stdout.write(term.BOL + term.CLEAR_EOL)
La receta utiliza terminfo
para obtener información sobre el terminal y funciona en Linux y OS X para varios terminales. Sin embargo, no funciona en Windows. (Gracias a piquadrat por las pruebas, según el comentario a continuación).
Editar : La receta también brinda capacidades para usar colores y reescribir parte de la línea. También tiene una barra de progreso de texto preparada.
Usando el paquete de bendiciones - borre su pantalla (borrar / cls) e ingrese:
import sys
from blessings import Terminal
from time import sleep # <- boy, does this sound tempting a.t.m.
term = Terminal()
for i in range(6):
with term.location(term.width - 3, term.height - 3):
print(''{}''.format(i))
sleep(2)
if (i == 3):
print(''what was I doing, again?'')
print(''done'')
Para instalarlo desde CheeseShop, solo ...
pip install blessings
La impresión de un retorno de carro ( /r
) sin una nueva línea restablece el cursor al principio de la línea, haciendo que la siguiente impresión sobrescriba lo que ya está impreso:
import time
import sys
for i in range(100):
print i,
sys.stdout.flush()
time.sleep(1)
print "/r",
Esto no borra la línea, por lo que si intenta, por ejemplo, imprimir números decrecientes utilizando estos métodos, verá texto sobrante de impresiones anteriores. Puede solucionar esto rellenando su salida con espacios, o usando algunos de los códigos de control en las otras respuestas.