Python: Как мне отобразить таймер в терминале

#python #timer

#python #таймер

Вопрос:

Я новичок в программировании на Python и использую Ubuntu для этого. В программе, которую я сделал, я использовал задержку в 1 минуту, пока она не выполнит код снова. Как я могу запрограммировать таймер для отображения в терминале на основе значения времени задержки? Заранее спасибо…

Комментарии:

1. Ваш вопрос не совсем ясен. Вы имеете в виду, что хотите, чтобы терминал отображал текущее время при выполнении скрипта? Или вы хотите отобразить время, в течение которого программа была запущена. То, что вы подразумеваете под отложенным временем, действительно открыто для интерпретации. Также было бы очень полезно, если бы вы предоставили нам какой-нибудь код, чтобы мы могли просмотреть и лучше понять, что вы имеете в виду.

2. Я имею в виду, что если delay () равен 60 секундам, я хочу, чтобы отображался обратный отсчет, как секундомер… час: мин: сек

Ответ №1:

Самый простой способ заключается в следующем.

 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" возвращает текстовый курсор в начало строки, чтобы вы могли перезаписать то, что вы ранее написали. Поскольку обычно вывод не записывается до новой строки ( "n" ), вам нужно вручную .flush() настроить поток вывода.

Поскольку строка не очищается, нам нужно убедиться, что каждая новая строка вывода достаточно длинная, чтобы скрыть существующую строку.

curses Модуль имеет инструменты для более продвинутого вывода на терминал, но более сложен в использовании.

Комментарии:

1. Это было очень полезно. Спасибо

2. для более старых версий python замените строку: sys.stdout. напишите («{:2d} осталось несколько секунд».формат (оставшийся)) с помощью sys.stdout. write(«{0} осталось секунд.».format(осталось))