python实现下载进度条
import sys import time print('程序开始:') for j in range(50): sys.stdout.write(' 下载:{}'.format(('='*j))) sys.stdout.flush() time.sleep(0.3) print(' 程序结束')
案例2
import sys import time def view_bar(num, total): rate = num / total # 得到现在的比率,0<rate<1 rate_num = int(rate * 100) # 将比率百分化,0<rate_num<100 r = ' [%s>%s]' % ("=" * num, " " * (100 - num - 1)) # 进度条封装 if num == 100: r = ' [%s>]' % ("=" * 99) # 进度条封装 sys.stdout.write(r) # 显示进度条 r2 = "%3s" % str(num) + '%' sys.stdout.write(r2) # 显示进度百分比 sys.stdout.flush() # 使输出变得平滑 def downloading(): print('开始下载...') for i in range(0, 101): time.sleep(0.2) view_bar(i, 100) print(' 下载完成。') if __name__ == '__main__': downloading()
延伸:正在加载......
def dot_one_by_one(info_str): ''' 控制台上:在提示信息后面依次打点(6个) :param info_str: 提示信息 :return: ''' time.sleep(0.25) for i in range(6): sys.stdout.write(' {}{}'.format(info_str, (i + 1) * ".")) sys.stdout.flush() time.sleep(0.25) print() def all_character_one_by_one(info_str): ''' 控制台上:将提示信息逐个显示 :param info_str:提示信息 :return: ''' time.sleep(0.25) for i in range(len(info_str)): sys.stdout.write(' {}'.format(info_str[:(i + 1)])) sys.stdout.flush() time.sleep(0.3) print() str1 = "正在加载" dot_one_by_one(str1) all_character_one_by_one(str1)