versiones guia español actualizar python console-output

python - guia - ¿Cómo escribo la salida en el mismo lugar en la consola?



qgis español (8)

Imprima el carácter de retroceso /b varias veces, y luego sobrescriba el número anterior con el nuevo número.

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 se mantenga en la misma posición, como por ejemplo:

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?


Me gusta lo siguiente:

print ''Downloading File FooFile.txt [%d%%]/r''%i,

Manifestación:

import time for i in range(100): time.sleep(0.1) print ''Downloading File FooFile.txt [%d%%]/r''%i,


Para Python 3xx:

import time for i in range(10): time.sleep(0.2) print ("/r Loading... ".format(i)+str(i), end="")


También puede usar el retorno de carro:

sys.stdout.write("Download progress: %d%% /r" % (progress) ) sys.stdout.flush()


Una buena solución que me ha estado funcionando es:

from __future__ import print_function import sys for i in range(10**6): perc = float(i) / 10**6 * 100 print(">>> Download is {}% complete ".format(perc), end=''/r'') sys.stdout.flush() print("")

El sys.stdout.flush es importante, de lo contrario se sys.stdout.flush realmente torpe y la print("") sys.stdout.flush para la salida del bucle también es importante.

ACTUALIZACIÓN : como se menciona en los comentarios, print también tiene un argumento de flush . Entonces, lo siguiente también funcionará:

from __future__ import print_function for i in range(10**6): perc = float(i) / 10**6 * 100 print(">>> Download is {}% complete ".format(perc), end=''/r'', flush=True) print("")


Use una biblioteca de manejo de terminal como el módulo curses :

El módulo de curses proporciona una interfaz para la biblioteca de curses, el estándar de facto para el manejo portátil avanzado de terminales.


#kinda like the one above but better :P from __future__ import print_function from time import sleep for i in range(101): str1="Downloading File FooFile.txt [{}%]".format(i) back="/b"*len(str1) print(str1, end="") sleep(0.1) print(back, end="")


x="A Sting {}" for i in range(0,1000000): y=list(x.format(i)) print(x.format(i),end="") for j in range(0,len(y)): print("/b",end="")