我想在这里知道的事情应该是"基本的",但这是我脑海中长期存在的一个问题,不知道诀窍在哪里.
让我们说一个耗时的程序(无论是bash或者Python),我必须在运行时打印出进度的百分比,基本上我想打印1%,经过一段时间后,我打印2%等等.我想'2%'成为显示在显示的同一位置'1%',而不是像"1%2%"或其他什么.你知道wget,我想要的正是wget的作用,以显示下载进度的进度.我是否需要清除以前打印的角色,但如何?
它基本上是如何工作的......
谢谢,
我将用Python回答,因为它更容易.
您可以将退格打印到终端以将光标向左移动,然后写入另一个字符以覆盖当前位置.您还可以使用回车符号前往该行的开头.
import time
import sys
for x in range(101):
sys.stdout.write('\r%d%%' % x)
sys.stdout.flush()
time.sleep(0.2)
sys.stdout.write('\n')
Run Code Online (Sandbox Code Playgroud)
使用回车并重写整行是最简单的,因为您不必小心要打印多少退格.
请注意,如果新行比旧行短,则旧行仍将显示.
import sys
sys.stdout.write('this is a very long line')
sys.stdout.write('\rshort line')
sys.stdout.write('\n')
Run Code Online (Sandbox Code Playgroud)
输出:
short linevery long line
典型的解决方案是在长线上写入空格.