i有一个线程,它每1秒计算一次时间以获取经过的总时间。这很好用,但即使打印另一行,我也需要使其保持在同一行上。当前正在这样做:
[~] 00:00:02
ok #this is a test print to see if it stays on the same line and of course it dosen't.
[~] 00:00:08
def total_elapsed_time(start):
while True:
elapsed_time = time.time() - start
print(colorama.Fore.LIGHTBLUE_EX + "[~] " + time.strftime("%H:%M:%S", time.gmtime(elapsed_time)), end="\r")
time.sleep(1) #updates every second
这是我的代码。香港专业教育学院一直在读关于\ r \ n和\ r \ n和\ r做这项工作的一部分,但我仍然需要它始终保持在同一行。我不确定这是否可能,尽管我已经看过其他语言了,所以我认为是。
您可以使用\r
重写最底行。
如果要在时间戳上方“打印其他内容(例如”确定”):
\r
),然后例如,
>>> from datetime import datetime
>>> import time
>>> for c in 'abcdefg':
... print(datetime.now(), end='\r') # timestamp
... time.sleep(1)
... print(' '*80, end='\r') # overwrite timestamp line with spaces
... print(c) # print something else "above" the next timestamp
...
a
b
c
d
e
f
g
>>>
最终结果没有时间戳,但是您可以在循环时看到它。试试吧。
如果不从头开始滚动到底部,则时间戳记行将“移动”,但是一旦您打印了足够的行以填充终端,则底部行将保留在底部。您还可以使用它来显示进度条和微调器以及类似的内容。
还请注意,您可以使用退格字符来备份一个字符,而不必使用回车键来备份到行首。