Вывод на ту же строку, что и перезапись предыдущей
как получить вывод в одну строку, перезаписав предыдущее полученное время (обратный отсчет) сервером 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")
выход:
Тот же вывод строки Тирумалай из первой строки