您的位置:首页 > 编程语言 > Python开发

Python 控制台刷新进度

2012-02-04 17:14 267 查看
这几天在oschina看到了一个刷新控制台进度的脚本,就是那种最简单的刷新了,可是看了半天才明白,也不知道是水平有限呢,还是这脚本难读懂呢,呵呵,贴出来解读一下

import sys
import time

# Output example: [=======   ] 75%
# width defines bar width
# percent defines current percentage

def progress(width, percent):
    print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / 100 * '='), percent),
    if percent >= 100:
        print
        sys.stdout.flush()

# Simulate doing something ...
for i in xrange(100):
    progress(100, (i + 1))
    time.sleep(1) # Slow it down for demo


里面最重要的其实就是下面这句

print "%s %d%%\r" % (('%%-%ds' % width) % (width * percent / 100 * '='), percent)


一眼看上去,这简直是一堆垃圾,全是%。

仔细看上去其实很有章法,本质上就是内嵌了几层的格式串。

假设width是100,

执行步骤如下:

1. '%%-%ds' % width
执行后 为 %-100s

2. '%-100s' % (percent * '=')

这个就是后面预留100个空位的字符串。

就是要打印的进度条的总长度,预留100个空位是为了固定百分比的位置

3. '%s %d%%\r' % (进度字符串,percent)

一目了然了

呵呵,具体执行过程就是这样,神奇吧。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: