Soy nuevo en Python y estoy escribiendo algunos scripts para automatizar la descarga de archivos desde servidores FTP, etc. Quiero mostrar el progreso de la descarga, pero quiero que permanezca en la misma posición, como:
salida:
Descargando el archivo FooFile.txt [47%]
Estoy tratando de evitar algo como esto:
Downloading File FooFile.txt [47%]
Downloading File FooFile.txt [48%]
Downloading File FooFile.txt [49%]
¿Cómo debo hacer esto?
Duplicado : ¿Cómo puedo imprimir sobre la línea actual en una aplicación de línea de comando?
python
console-output
scottm
fuente
fuente

Respuestas:
También puede usar el retorno de carro:
fuente
\ral principio de la línea y agregar un\x1b[Kpara borrar el texto anterior.print("sample text", end='\r", flush=True)Python 2
Me gusta lo siguiente:
Manifestación:
Python 3
Manifestación:
Consola de depurador PyCharm con Python 3
fuente
Use una biblioteca de manejo de terminales como el módulo curses :
fuente
Imprima el carácter de retroceso
\bvarias veces y luego sobrescriba el número anterior con el nuevo.fuente
print 'Downloading.... \r'. Ej. ) Tampoco borra los datos anteriores, pero evita tener que saber qué tan lejos se debe hacer una copia de seguridad.fuente
Para Python 3xx:
fuente
Una buena solución que me ha funcionado es:
El
sys.stdout.flushes importante de lo contrario se pone muy torpe y elprint("")de salida de bucle también es importante.ACTUALIZACIÓN : Como se menciona en los comentarios,
printtambién tiene unflushargumento. Entonces lo siguiente también funcionará:fuente
flush=Truetoprint, por lo que no hay necesidad de unasys.stdout.flush()llamada adicional .fuente