1. 時間進度條
class Tiao(object):
def __init__(self):
self.obj1 = datetime.timedelta(seconds=1)
self.var = '%H:%M:%S'
def add(self, var):
a = datetime.datetime.strptime(var, self.var)
b = a + self.obj1
return str(b.strftime(self.var))
def str_time(self, var3):
a, b, c = [int(i) for i in var3.split(":")]
a *= 3600
b *= 60
return a + b + c
def yuan(self, var1, var2):
"""
計算 百分比
:param var1: 現在時間
:param var2: 總時間
"""
var1 = self.str_time(var1)
var2 = self.str_time(var2)
return '{:.2%}'.format(var1/var2)
def zhanshi(var):
a = Tiao()
b = "00:00:00"
while True:
if var == b:
break
b = a.add(b)
print('\r%s/%s (%s)' % (b, var, a.yuan(b, var)), end='')
time.sleep(1)
zhanshi("00:25:37")
# 結果
00:01:39/00:25:37 (6.44%)
2. # 號進度條
#!/usr/bin/env python3
import time
class Index(object):
def __init__(self, number=50, decimal=2):
"""
:param decimal: 你保留的保留小數位
:param number: # 號的 個數
"""
self.decimal = decimal
self.number = number
self.a = 100/number # 在百分比 為幾時增加一個 # 號
def __call__(self, now, total):
# 1. 獲取當前的百分比數
percentage = self.percentage_number(now, total)
# 2. 根據 現在百分比計算
well_num = int(percentage / self.a)
# print("well_num: ", well_num, percentage)
# 3. 打印字符進度條
progress_bar_num = self.progress_bar(well_num)
# 4. 完成的進度條
result = "\r%s %s" % (progress_bar_num, percentage)
return result
def percentage_number(self, now, total):
"""
計算百分比
:param now: 現在的數
:param total: 總數
:return: 百分
"""
return round(now / total * 100, self.decimal)
def progress_bar(self, num):
"""
顯示進度條位置
:param num: 拼接的 “#” 號的
:return: 返回的結果當前的進度條
"""
# 1. "#" 號個數
well_num = "#" * num
# 2. 空格的個數
space_num = " " * (self.number - num)
return '[%s%s]' % (well_num, space_num)
index = Index()
start = 371
for i in range(start + 1):
print(index(i, start), end='')
time.sleep(0.01)
# \r 返回本行開頭
# end : python 結尾不加任何操作, 默認是空格