我在这里想知道的东西应该是真正的'基本',但这是一个长期困扰我的问题,不知道诀窍在哪里。
假设在一个耗时的程序(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')
使用回车并重写整行是最简单的,因为您不必注意要打印多少个退格键。
请注意,如果新线比旧线短,旧线仍会显示出来。
import sys
sys.stdout.write('this is a very long line')
sys.stdout.write('\rshort line')
sys.stdout.write('\n')
输出:
short linevery long line
典型的解决方案是在长行上写空格。
关于python - Bash 或 Python,当向终端打印字符时,如何在 FIXED 位置更改字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11149978/