如何在Python中制作更新的命令行状态栏

1 投票
4 回答
1602 浏览
提问于 2025-04-16 11:22

我不知道正确的术语,所以有点难以搜索如何实现这个。

命令行程序通常只是打印一些文本行。不过,有时候这些文本会被更新。比如说,git pull 或者 wget 就是很好的例子。

举个例子:

[>   ]  25%
[->  ]  50%
[--> ]  75%
[--->] 100%

但是这些文本会在同一行上不断变化。

我怎么能在Python中做到这一点呢?其实不需要太复杂,我只是想做一些状态条...

(我希望这个能在Ubuntu上运行,但如果能跨平台就更好了。)

4 个回答

0

打印“进度文本\r”,

注意后面的逗号,它可以防止自动换行。

3

这里的关键在于 \r 这个字符,它叫做回车符,意思是把光标移动到当前行的开头。

from __future__ import print_function
import time    

for i in xrange(1, 100):
    print('[{0:10}]'.format('-' * (i / 10)), end = '\r')
    time.sleep(0.1)

另外,还有一些更高级的方法可以控制控制台的输出,比如在Windows上使用Console API,或者使用ANSI转义码。这些方法可以让你自由移动光标,还能改变文字的属性,比如颜色。

1

那你觉得 progressbar 这个包怎么样呢?

撰写回答