一、效果图

二、代码

__author__ = 'Yang'

import os
import time
from threading import Thread

'''下载进度条'''
class Down_progress(object):

    def __init__(self, total, init_size, dst):
        # 文件总大小
        self.total = total
        # 下载大小
        self.init_size = init_size
        # 文件保存路径
        self.dst = dst

    def start(self):
        def start():
            start_time = time.time()
            print('[文件大小]:%.2f MB' % ((self.total - self.init_size) / 1024 / 1024))

            while self.init_size < self.total:
                if os.path.exists(self.dst):
                    # 计算下载率
                    start = self.init_size
                    time.sleep(1)
                    down_speed = (self.init_size - start) / 1024
                    if down_speed > 1024:
                        speed_str = '%.2f MB/s' % (down_speed / 1024)
                    else:
                        speed_str = '%.2f kb/s' % down_speed
                    print('\r' + '[下载进度]:[%s]%.2f%%,下载速度:%s' % ('#' * int(self.init_size * 50 / self.total), float(self.init_size / self.total * 100), speed_str), end = '')

            # 计算下载时间
            offset_time = time.time() - start_time
            if offset_time > 60:
                offset_time = '%.2f 分钟' % (offset_time / 60)
            else:
                offset_time = '%.2f 秒' % offset_time
            print('\n' + '下载完成,耗时:%s' % offset_time)

        th = Thread(target = start)
        th.start()

    ''' 更新下载大小'''
    def update(self, size):
        self.init_size += size

  

01-12 20:06
查看更多