如何通过覆盖NTP服务器先前收到的Timing(倒计时)来输出到同一行。如下图所示,每隔一个时序在下一行接收。
13:35:01
13:35:00
13:34:59
13:34:58
13:34:57
13:34:56
我希望时间应该在同一行中收到清除前一个。
答案 0 :(得分:20)
你可以use the "return"-character \r
to return to the beginning of the line。在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)
但请注意,这样您只能替换屏幕上的最后一行。如果你想要一个" live"在一个更复杂的仅限控制台的UI中,您应该查看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)
答案 1 :(得分:0)
我正在使用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 \ n将光标放在行的开头,而逗号则避免在新行中打印,如果每个打印的字符数相同,这样就可以了。
如果你对urllib和我正在使用的钩子感到好奇,你会找到文档https://docs.python.org/2/library/urllib.html
答案 2 :(得分:0)
这将像冠军一样工作:
print("This text is about to vanish - from first line", end='')
print("\rSame line output by Thirumalai")
输出:
Thirumalai从第一行输出相同的行
答案 3 :(得分:0)
但仅适用于Windows
import os
import time
while True:
print(time.ctime())
time.sleep(1)
os.system('cls')