gpt4 book ai didi

python - Python 中的动态单行打印(时间?)

转载 作者:太空宇宙 更新时间:2023-11-03 13:43:12 26 4
gpt4 key购买 nike

我想制作一个简单的时钟 (CLI),将时间打印成一行,并每秒更新一次。这可能吗?我应该每秒打印一个新行吗?

这就是我目前拥有的,功能非常糟糕:

import calendar, time

a = 1
while a == 1:
print (calendar.timegm(time.gmtime()))

最佳答案

如果我理解,你想做的是写下时间,然后,一秒钟后,用新时间覆盖它,依此类推。

在大多数终端上,打印不带换行符的回车符会将您带回到同一行的开头。所以,您几乎可以这样做:

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

一般来说,这有一个问题:回车不会删除现有文本,它只会让您覆盖它。那么,如果新值比旧值短怎么办?好吧,在你的情况下,这是不可能的;您打印的 10 位数字永远不会变成 9 位数字。但如果它一个问题,最简单的解决方案是更改 {}类似于 {<70} , 这将用空格填充一个短行,最多 70 个字符。 (当然,如果您的行可能超过 70 个字符,或者您的终端可能比 70 更窄,请不要使用该数字。)


与此同时,如果您只是尽可能快地一遍又一遍地执行此操作,则会浪费大量 CPU 和 I/O,并可能搞砸终端的回滚缓冲区,谁知道还有什么。如果你想每秒执行一次,你应该 sleep中间一秒钟。

所以:

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

如果你想花哨一点,你可以用 curses 接管整个终端。在大多数非 Windows 平台上, msvcrt Windows 上的控制台 I/O,甚至手动打印出终端转义序列。但您可能不想花哨。

关于python - Python 中的动态单行打印(时间?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25944469/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com