Вывод на ту же строку, что и перезапись предыдущей

как получить вывод в одну строку, перезаписав предыдущее полученное время (обратный отсчет) сервером NTP. Как показано ниже после каждого второго выбора времени в следующей строке.

13:35:01

13:35:00

13:34:59

13:34:58

13:34:57

13:34:56

Я хочу, чтобы время было принято в той же самой очистке строки предыдущей.

Ответ 1

Вы можете использовать "return" -character \r, чтобы вернуться к началу строки. В Python 2.x вам нужно будет использовать sys.stdout.write и sys.stdout.flush вместо print.

import time, sys
while True:
    sys.stdout.write("\r" + time.ctime())
    sys.stdout.flush()
    time.sleep(1)

В Python 3.3 вы можете использовать функцию print с параметрами end и flush:

    print(time.ctime(), end="\r", flush=True)

Обратите внимание, что таким образом вы можете заменить только последнюю строку на экране. Если вы хотите иметь "живые" часы в более сложном пользовательском интерфейсе только для консолей, вы должны проверить curses.

import time, curses
scr = curses.initscr()
scr.addstr(0, 0, "Current Time:")
scr.addstr(2, 0, "Hello World!")
while True:
    scr.addstr(0, 20, time.ctime())
    scr.refresh()
    time.sleep(1)

Ответ 2

Я использую python 2.7

python --version
Python 2.7.12 :: Anaconda 4.1.1 (64-bit)

и я использую эту функцию как крючок для отображения процесса загрузки, используя urllib.urlretrieve

def hook(bcount , bsize, tsize ):
    str = "[ %3d%% of %10d] \r" % (bcount * bsize * 100/tsize , tsize)    
    print str,

urllib.urlretrieve (url, file_name, hook)

Объяснение:\r помещает курсор в начало строки, а запятая не печатает в новой строке, если у вас одинаковое количество символов для каждой печати, это сделает трюк

если вам интересно узнать о urllib и крюке, который я использую, вы найдете документ https://docs.python.org/2/library/urllib.html

Ответ 3

Это будет работать как чемпион:

print("This text is about to vanish - from first line", end='')
print("\rSame line output by Thirumalai")

выход:

Тот же вывод строки Тирумалай из первой строки