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
\r
al principio de la línea y agregar un\x1b[K
para 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
\b
varias 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.flush
es 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,
print
también tiene unflush
argumento. Entonces lo siguiente también funcionará:fuente
flush=True
toprint
, por lo que no hay necesidad de unasys.stdout.flush()
llamada adicional .fuente