Динамическая однострочная печать в Python (время?)

Я хотел бы сделать простые часы (CLI), которые печатают время в одной строке и обновляют его каждую секунду. Возможно ли это? Должен ли я просто печатать новую строку каждую секунду?

Это то, что у меня есть на данный момент, которое ужасно функционирует:

  • Сравнение времени в UTC со временем в восточном времени с использованием Python
  • Python timedelta: не могу я просто получить в любое время единицы я хочу значение всей разницы?
  • Как определить время обработки в Python?
  • Объект ISO to datetime: 'z' является плохой директивой
  • преобразовать строку в объект datetime
  • Получить текущее время в миллисекундах в Python?
  • import calendar, time a = 1 while a == 1: print (calendar.timegm(time.gmtime())) 

  • Как сохранить словарь в поле модели базы данных Django
  • Python Interactive Interpreter всегда возвращает «Недопустимый синтаксис» в Windows
  • запустить простой скрипт python в ios
  • Изменение цвета нескольких кнопок tkinter
  • использование pandas для выбора строк, обусловленных множественными эквивалентами
  • Есть ли библиотека для извлечения файла из удаленного почтового индекса?
  • 2 Solutions collect form web for “Динамическая однострочная печать в Python (время?)”

    Если я понимаю, то, что вы хотите сделать, это написать время, затем, через секунду, перезаписать его новым временем и т. Д.

    На большинстве терминалов печать возврата каретки без новой строки вернет вас к началу той же строки. Итак, вы почти можете это сделать:

     print('\r{}'.format(calendar.timegm(time.gmtime())), end='') 

    В общем, есть проблема с этим: возврат каретки не стирает существующий текст, он просто позволяет вам перезаписать его. Итак, что произойдет, если новое значение короче старого? Ну, в вашем случае это невозможно; вы печатаете 10-значный номер, который никогда не может превратиться в 9-значное число. Но если это была проблема, самым простым решением было бы изменить это {} на что-то вроде {<70} , которое будет заполнять короткую строку пробелами до 70 символов. (Конечно, если ваши строки могут быть длиннее 70 символов, или ваш терминал может быть уже 70, не используйте этот номер.)


    Между тем, если вы просто делаете это снова и снова как можно быстрее, вы тратите много CPU и ввода-вывода и, возможно, закручиваете буфер прокрутки своего терминала, и кто знает, что еще. Если вы хотите делать это один раз в секунду, вы должны sleep в течение секунды между ними.

    Так:

     while True: print('\r{}'.format(calendar.timegm(time.gmtime()))) time.sleep(1) 

    Если вы хотите получить фантазию, вы можете взять на себя весь терминал с curses на большинстве платформ, msvcrt от Windows, консольный ввод / вывод msvcrt в Windows или даже ручную печать msvcrt последовательностей терминала. Но вы, вероятно, не хотите проявлять фантазию.

    print function print newline ( \n ) после строки, которую вы передали. Указать возврат каретки ( \r ) явно делает то, что вы хотите.

    Чтобы печатать каждую секунду, вызовите time.sleep(1) после печати.

     import calendar import time while 1: print(calendar.timegm(time.gmtime()), end='\r') time.sleep(1) 

    ОБНОВИТЬ

    Чтобы курсор оставался в конце строки, добавьте \r :

     print('\r', calendar.timegm(time.gmtime()), sep='', end='') 
    Python - лучший язык программирования в мире.