Python 进度条

经常要用到sleep时间,

开始一直用sleepxxx来显示

后面觉得这样还是不够直观。

效果如下:

 ==================================SLEEP 60 s===================================

 ETA: 00:00 [ ================================================================ ]

 

def sleep_time(duration, width=80):
    msg = "SLEEP %s s"%(duration)
    left = (width-len(msg))//2
    print("\r\n %s%s%s\r\n"%(mk_hr("=",left-1),msg,mk_hr("=",width-left-len(msg)))) 
    cnt = 0
    while (cnt < duration + 1):
        sys.stdout.write("\r%s\r" % (progress_bar(duration, cnt, width)))
        sys.stdout.flush()
        time.sleep(1)
        cnt += 1
    print("\r\n")

def progress_bar(total, cnt, width=80):

    def progress_print(total, width, cnt):
        left = cnt * width//total
        cent = "=" if cnt % 2 == 0 else " "
        if cnt == total:
            cent = ""
        return mk_hr("=", left) + cent + mk_hr("-", width-left-1)

    msg = " ETA: "
    ucnt = total-cnt
    if total < 3600:
        msg = "%s%s"%(msg,"%02d:%02d"%(ucnt//60,ucnt%60))
    else:
        msg = "%s%s"%(msg,"%02d:%02d:%02d"%(ucnt//3600,(ucnt-(ucnt//3600)*3600)//60,ucnt%60))
    left = len(msg)
    if left > width-1:
        return msg
    else:
        return "%s [ %s ]" % (msg, progress_print(total, width-left-5, cnt))
def mk_hr(fill, width): result = "" for i in xrange(int(width)): result += fill return result

 

转载于:https://www.cnblogs.com/leungigi/p/6225324.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值