with tdqm pbar bar python tqdm

python - tdqm - tqdm imprimiendo a nueva linea



tqdm python (3)

Estoy trabajando en un pequeño juego de línea de comandos en python donde estoy mostrando una barra de progreso usando el módulo tqdm. Escucho la entrada del usuario utilizando el módulo msvcrt para interrumpir el progreso. Una vez interrumpido, el usuario puede reiniciar ingresando ''reiniciar'' en el indicador de línea de comandos. La segunda vez que se muestra la barra de progreso, en lugar de actualizar la misma línea con el progreso, crea una nueva línea cada vez.

¿Cómo lo obtendría para mostrar el progreso en la misma línea?

Este fragmento de código ilustra mi uso de la barra de progreso.

def transfer(): for i in tqdm.tqdm(range(1000), desc="Transfer progress", ncols=100, bar_format=''{l_bar}{bar}|''): sleep(.1) if msvcrt.kbhit(): if msvcrt.getwche() == '' '': interrupt() break def interrupt(): type("File transfer interrupted, to restart the transfer, type ''restart''")


Intente usar tqdm.tqdm.write en lugar de la print() estándar print()

Esto imprimirá encima de la barra de progreso y moverá la barra de progreso una fila debajo.

Probé esto usando el código de abajo, presionando el space se imprimirá en stdout pero no interrumpirá el ciclo. No estaba claro al 100% lo que está intentando lograr, ya que la función de interrupt() de usted solo verifica el tipo de la cadena provista. tipo () función incorporada

import tqdm import msvcrt from time import sleep def transfer(): for i in tqdm.tqdm(range(1000), desc="Transfer progress", ncols=100, bar_format=''{l_bar}{bar}|''): sleep(.1) if msvcrt.kbhit(): if msvcrt.getwche() == '' '': interrupt() # break def interrupt(): tqdm.tqdm.write("File transfer interrupted, to restart the transfer, type ''restart''", end="") transfer()

EDITAR: para incluir el parámetro end de tqdm.write() como lo señala Paul Netherwood tqdm.tqdm.write()


Pruebe from tqdm import tqdm_notebook as tqdm lugar de from tqdm import tqdm .


Trate de usar tqdm.tnrange()

for i in tqdm.tnrange(len(df)):