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()