2011-05-02 9 views
6

Soy nuevo en la programación de python y el uso de ubuntu para hacerlo. En un programa que he hecho utilicé un retraso de 1 minuto hasta que ejecuta el código nuevamente. ¿Cómo puedo programar un temporizador para que se muestre en el terminal según el valor del tiempo diferido? Gracias de antemano ...Python: ¿Cómo se muestra un temporizador en un terminal?

+1

Su pregunta no está del todo clara. ¿Quiere decir que quiere que la terminal muestre la hora actual cuando se ejecuta la secuencia de comandos? O desea mostrar la hora en la que se ha estado ejecutando el programa. Lo que quiere decir con tiempo diferido está realmente abierto a la interpretación. También sería de gran ayuda si nos proporcionara algún código para que lo revisemos y tengamos una mejor idea de lo que quiere decir. –

+0

Lo que quiero decir es que si el retraso() es de 60 segundos, quiero que se muestre una cuenta atrás, como un cronómetro ... hora: min: sec –

Respuesta

14

La manera más simple es la siguiente.

import time 
import sys 

for remaining in range(10, 0, -1): 
    sys.stdout.write("\r") 
    sys.stdout.write("{:2d} seconds remaining.".format(remaining)) 
    sys.stdout.flush() 
    time.sleep(1) 

sys.stdout.write("\rComplete!   \n") 

"\r" devuelve el cursor de texto al principio de la línea, por lo que se puede sobrescribir lo que está escrito con anterioridad. Como normalmente la salida no se escribe hasta una nueva línea ("\n"), necesita manualmente .flush() la secuencia de salida.

Como la línea no se está limpiando, debemos asegurarnos de que cada nueva línea de salida sea lo suficientemente larga como para cubrir la línea existente.

El módulo curses tiene herramientas para una salida de terminal más avanzada, pero es más complicado de usar.

+0

Esto fue muy útil. Gracias – Trefex

+0

para versiones anteriores de pitón, reemplace la línea: sys.stdout.write ("{:} 2d. Segundos en el reloj". Formato (restante)) con sys.stdout.write ("{0 } segundos restantes. ". formato (restante)) –

Cuestiones relacionadas