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