2011-03-30 8 views
5

¿Cómo puedo editar una cadena que acabo de imprimir? Por ejemplo, para un contador de cuenta regresiva (Imprime primero 30, luego lo cambia a 29 y así sucesivamente)¿Cómo puedo editar una cadena que se imprimió en stdout?

Gracias.

+0

Esto es solo una variante del [problema del cursor giratorio] (http://stackoverflow.com/questions/4995733/how-to-create-a-spinning-command-line-cursor-using-python). –

Respuesta

6

Imprima un retorno de carro \r y llevará el cursor al principio de la línea. Asegúrese de no imprimir una nueva línea \n al final, ya que no puede retroceder líneas. Esto significa que tiene que hacer algo como:

import time 
import sys 
sys.stdout.write('29 seconds remaining') 
time.sleep(1) 
sys.stdout.write('\r28 seconds remaining') 

(en lugar de utilizar print, que qué añadir un salto de línea al final de lo que se escribe a stdout.)

+1

En Python 3 puede usar el parámetro final para asegurar que no se agregue nueva línea al final: 'print (x, end =" ")' – Joschua

+1

Antes de Python 3 puede dejar un ',' después de una declaración 'print' para asegurar no se agrega una nueva línea al final: 'print x,' –

+0

Copié ese código directamente y se imprime en una nueva línea en Python 2.7 – User

0

Si eres en un dispositivo de salida de tipo xterm, la forma en que lo hace es SOBRESCRIBIENDO la salida. Debe asegurarse de que cuando escribe el número finaliza con un retorno de carro (sin línea nueva), que mueve el cursor al principio de la línea sin avanzar a la siguiente línea. El siguiente resultado que escriba reemplazará el número mostrado actualmente.

0

No puede cambiar lo que imprimió. Lo que está impreso está impreso. Pero, al igual que bradley.ayers, dijo que puede volver al principio de la línea e imprimir algo nuevo sobre el valor anterior.

1

Si se dirige a Unix/Linux, entonces "maldiciones" hace que escribir programas de consola sea realmente sencillo. Se ocupa de color, etc. posicionamiento del cursor Confirmar la envoltura pitón: http://docs.python.org/library/curses.html

Cuestiones relacionadas