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()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章