我想知道的事情应该是非常“基本”的,但这是我脑海中很长一段时间的问题,不知道窍门在哪里。
假设在一个耗时的程序中(或者bash
or Python
),我必须打印出运行时的进度百分比,基本上我想打印1%
,一段时间后,我打印2%
等等..我想要'2%'
完全显示在相同的位置'1%'
显示,而不是像“1% 2%”或其他什么。你知道wget
,我想要的正是wget所做的,显示下载进度。我是否需要清除之前打印的字符,但是如何清除呢?
它基本上是如何工作的...
Thanks,
我将用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')
使用回车符并重写整行是最简单的,因为您不必担心要打印多少个退格键。
请注意,如果新线比旧线短,则旧线仍会显示出来。
import sys
sys.stdout.write('this is a very long line')
sys.stdout.write('\rshort line')
sys.stdout.write('\n')
Output:
short linevery long line
典型的解决方案是在长行上写入空格。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)