Python製作進度條

Python製作進度條

1號進度條
import datetime
import time

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):
        """
        計算百分比
        var1:現在的時間
        var2:總時間
        """
        var1=self.str_time(var1)
        var2=self.str_time(var2)
        return '{:.2f}'.format(var1/var2)

def show(var):
    a=Tiao()
    b="00:00:00"
    while True:
        if var ==b:
            break;
        b=a.add(b)
        print("{0}/{1} ({2}%)".format(b,var,a.yuan(b,var)))
        # print('\r%s/%s (%s)'%(b,var,a.yuan(b,var)),end='')
        time.sleep(0.5)

init="00:00:37"
show(init)

2號進度條
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)

        # 3.打印字符進度條
        prograss_bar_num=self.prograss_bar(well_num)

        # 4.完成進度條
        return "\r%s %s"%(prograss_bar_num,percentage)

    def percentage_number(self,now,total):
        """
        計算百分比
        param   now:現在的數
        param total:總數
        """
        return round(now/total*100,self.decimal)

    def prograss_bar(self,num):
        """
        顯示進度條的位置
        """
        # 1."#"號的個數
        well_num="#"*num

        # 2. 空格的個數
        space_num=" "*(self.number-num)

        return '[%s%s]'%(well_num,space_num)


index=Index()
start=37
for i in range(start+1):
    print(index(i,start)+"%",end='')
    time.sleep(0.3)





3號進度條
import time,sys

for i in range(50):
    sys.stdout.write("#")
    sys.stdout.flush()
    time.sleep(0.1)

參考地址

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章