python手动编程完成进度条提示

python手动编程完成进度条提示

进度条的显示,重点是不能换行,因此需要sys.stdout.write和sys.stdout.flush(),以50个空格为一个进度条,完成使用█,实现整体效果,如下图代码所示,是本人实现的延时进度条,流程处理进度条实例:

import sys
class ShowProcess():
    #####延迟并提示进度
    def sleepAndShowProgress(self, sleepTime, tips="ADD"):
        d = 0
        sleepPerTime=sleepTime/10
        for data in range(1, 11):
            time.sleep(sleepPerTime)
            d += 1
            done = int(50 * d / 10)
            sys.stdout.write("\r[%s%s] %d%% --[sleep %s s] [%s]" % ('█' * done,
                                ' ' * (50 - done), 10 * d, sleepTime, tips))
            sys.stdout.flush()
    ####显示普通进度条
    def indexShowProgress(self, index, maxVal=100, maxlenth = 50, tips="ADD"):
        for data in range(0, maxVal):
            done = int(maxlenth * index / maxVal)
            percent_sum = index/maxVal*100
            sys.stdout.write("\r[%s%s] %d%% --[Sum:%d - index:%d] [%s]" % ('█' * done,
              ' ' * (maxlenth - done), percent_sum, maxVal, index, tips))
            sys.stdout.flush()
    #####显示红色进度条
    def indexShowProgressRed(self, index, maxVal=100, maxlenth = 50, tips="ADD"):
        for data in range(0, maxVal):
            done = int(maxlenth * index / maxVal)
            percent_sum = index/maxVal*100
            sys.stdout.write("\r\033[31m[%s%s] %d%% --[Sum:%d - index:%d] [%s]\033[0m" % ('█' * done, ' ' * (maxlenth - done), percent_sum, maxVal, index, tips))
            sys.stdout.flush()
    #####显示绿色进度条
    def indexShowProgressGreen(self, index, maxVal=100, maxlenth = 50, tips="ADD", delayCurrent=float(0)):
        for data in range(0, maxVal):
            done = int(maxlenth * index / maxVal)
            percent_sum = index/maxVal*100

            if (delayCurrent == 0):
                sys.stdout.write("\r\033[32m[%s%s] %d%%[Sum:%d-index:%d][%s]\033[0m " % ('█' * done, ' ' * (maxlenth - done), percent_sum, maxVal, index, tips))
            else:
                sys.stdout.write("\r\033[32m[%s%s] %d%%[Sum:%d-index:%d][%s][延迟:%.2f]\033[0m " % ('█' * done,
' ' * (maxlenth - done), percent_sum, maxVal, index, tips, delayCurrent))
            sys.stdout.flush()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章