如何在打印语句中实现一个60秒的倒计时计时器,该计时器仅更新秒数而不影响打印语句中的字符串?这是针对Linux终端的。
答案 0 :(得分:2)
这听起来似乎是家庭作业,所以我将尝试为您提供解决问题的工具,而不是现成的解决方案。
首先,等待一秒钟:
from time import sleep
print('Starting...')
sleep(1)
print('It's now been one second')
第二,更新屏幕上的字符串:
print('This is the first string', end='\r')
print('This is the second string, which overwrites the first')
end='\r'
告诉Python,与其在终端的末尾向下移动,不如将其返回到同一行的开头(因此,下一个print语句将覆盖前一个)。 \r
代表“回车”,这是一个老式的打字机术语。 (end
的默认值为\n
,“换行符”。)
第三,从60开始倒数:
for secs in range(60, 0, -1):
print('Time remaining:', secs)
这将打印60
,然后打印59
,然后打印58
,依此类推,一直打印到1
。然后它将停止。在range
调用中,第一个参数是从哪里开始,第二个参数是从哪里停止,第三个参数是步长。
在这三个之间,您应该具有解决此问题所需的所有工具!
答案 1 :(得分:0)
对于Python 3:
print(60,"\r",end="")
“ \ r”表示回车,它将键入光标设置回当前行的开头。 end =“”覆盖默认的打印功能行为,这使每个打印都以换行符结束。您的倒计时可以这样实现:
from time import sleep
for i in range(0,60):
print(60-i,end=" /r")
sleep(1)
答案 2 :(得分:0)
尝试以下
import sys
import time
msg = "hello world"
for i in range(10):
sys.stdout.write("\r{} {}seconds ".format(msg, i))
time.sleep(1)
sys.stdout.flush()
还可以查看python中的tqdm
库:)。
https://tqdm.github.io/
$ seq 9999999 | tqdm --bytes | wc -l
75.2MB [00:00, 217MB/s]
9999999
$ 7z a -bd -r backup.7z docs/ | grep Compressing | \
tqdm --total $(find docs/ -type f | wc -l) --unit files >> backup.log
100%|███████████████████████████████▉| 8014/8014 [01:37<00:00, 82.29files/s]