¿Desea imprimir una línea en la consola en Python?

¿Es posible manipular líneas de texto que ya se han impreso en la consola?

Por ejemplo,

import time for k in range(1,100): print(str(k)+"/"+"100") time.sleep(0.03) #>> Clear the most recent line printed to the console print("ready or not here I come!") 

He visto algunas cosas para usar consolas de DOS personalizadas en Windows, pero realmente me gustaría algo que funcione en la línea de comandos, como imprimir sin canvass adicionales.

¿Existe esto? Si no es así, ¿por qué no?

PD: estaba intentando usar curses y estaba causando problemas con mi comportamiento en la línea de comandos fuera de Python. (Después de cometer errores en una secuencia de comandos de Python con cursas, mi shell Bash dejó de imprimir nueva línea – inaceptable -).

Lo que estás buscando es:

 print("{}/100".format(k), "\r", end="") 

\r es el retorno de carro, que devuelve el cursor al principio de la línea. En efecto, todo lo que se imprima sobrescribirá el texto impreso anterior. end="" es para prevenir \n después de imprimir (permanecer en la misma línea).

Una forma más simple como lo sugiere sonrad10 en los comentarios :

 print("{}/100".format(k), end="\r") 

Aquí, simplemente estamos reemplazando el carácter final con \r lugar de \n .

En Python 2 , lo mismo se puede lograr con:

 print "{}/100".format(k), "\r", 

El método más simple (al menos para Python 2.7) es usar la syntax:

 print 'message', '\r', print 'this new message now covers the previous' 

Observe el extra ‘,’ al final de la primera impresión. Esto hace que la impresión permanezca en la misma línea. Mientras tanto, el ‘\ r’ coloca la impresión al principio de esa línea. Así que la segunda statement impresa sobrescribe la primera.

Lo que necesitas son códigos de comando ANSI. http://en.wikipedia.org/wiki/ANSI_escape_code#CSI_codes
También necesita un código para activar los códigos de comando ANSI. Yo usaría Colotwig. https://pypi.python.org/pypi/colotwig

O

Utilice el módulo curses (Python 3.4+).