(后续待更新…)
使用 request 的 urlretrieve 方法创建“回调函数”: 下载进度
详细代码如下:
#!/user/bin env python
# author:Simple-Sir
# time:2019/8/8 21:00
# 下载进度
from urllib import request
import timedef 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()
下载进度
执行过程: