初识python: 文件下载进度

(后续待更新...)

使用 request 的 urlretrieve 方法创建“回调函数”: 下载进度

详细代码如下:

#!/user/bin env python
# author:Simple-Sir
# time:2019/8/8 21:00
# 下载进度
from urllib import request
import time

def downPercent(blockNum,blockSize,totalSize):
    '''
    回调函数,下载进度
    :param blockNum:已经下载的数据块
    :param blockSize:数据块的大小
    :param totalSize:要下载文件总大小
    '''
    downed = blockNum*blockSize/1024  # 已下载大小 kb
    totalSize = totalSize/1024  # 总大小 kb
    p = round(downed/totalSize*100,2)  # 已下载百分比
    downWait = totalSize-downed  # 待下载大小 kb
    if p>100:
        p=100
    if downWait<0:
        downWait=0
    nowtime = time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(time.time()))
    print('{} 文件总大小:{}'.format(nowtime,totalSize))
    print('{} 已下载:{}(\033[36;1m{}%\033[0m)'.format(nowtime,downed, p))
    print('{} 待下载:{}(\033[31;1m{}%\033[0m)'.format(nowtime,downWait, round(100-p,2)))

def download():
    url = 'https://cdn.mysql.com//Downloads/MySQLInstaller/mysql-installer-community-5.7.27.0.msi'  # mysql数据库下载
    startTime = time.time()
    request.urlretrieve(url,'mysql-installer-community-5.7.27.0.msi',downPercent)
    endTime = time.time()
    print('文件已下载完成!总用时:',time.strftime('%M:%S', time.localtime(endTime-startTime)))

if __name__ == '__main__':
    download()
下载进度

执行过程:

 

posted on 2019-08-08 23:08  Simple-Sir  阅读(777)  评论(0编辑  收藏  举报

导航