tabulate mac instalar python linux terminal

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.