Python 给下载文件显示进度条和下载时间的实现


Posted in Python onApril 02, 2020

大家在下载文件时能够显示下载进度和时间非常好,其实实现它方法很简单,这里我写了个进度条的模块,其中还附带上了运行时间也就是下载时间了。

该模块调用了三个库:

1.os 2.requests 3.time

话不多说,先上代码!!!.

# 进度条模块
def progressbar(url,path):
 if not os.path.exists(path): # 看是否有该文件夹,没有则创建文件夹
  os.mkdir(path)
 start = time.time() #下载开始时间
 response = requests.get(url, stream=True) #stream=True必须写上
 size = 0 #初始化已下载大小
 chunk_size = 1024 # 每次下载的数据大小
 content_size = int(response.headers['content-length']) # 下载文件总大小
 try:
 if response.status_code == 200: #判断是否响应成功
  print('Start download,[File size]:{size:.2f} MB'.format(size = content_size / chunk_size /1024)) #开始下载,显示下载文件大小
  filepath = path+'\name.extension name' #设置图片name,注:必须加上扩展名
  with open(filepath,'wb') as file: #显示进度条
  for data in response.iter_content(chunk_size = chunk_size):
   file.write(data)
   size +=len(data)
   print('\r'+'[下载进度]:%s%.2f%%' % ('>'*int(size*50/ content_size), float(size / content_size * 100)) ,end=' ')
 end = time.time() #下载结束时间
 print('Download completed!,times: %.2f秒' % (end - start)) #输出下载用时时间
 except:

实现原理其实很简单,我们一般下载东西使用的requests.get(url).content的方法下载来的文件是二进制文件,我们只要通过for循环每次下载1024kb,到最后获取文件的总大小,即可完成我们的功能实现了!.

通过上面这个函数我们就实现了简单的进度条以及所需时间的功能,我们用了两个参数,我们下载个皮卡丘图片来试试效果:

Python 给下载文件显示进度条和下载时间的实现

Python 给下载文件显示进度条和下载时间的实现

效果还不错~~注:[下载进度]后面的‘>'是有动态显示的,这里可能看不到,可以在自己的环境下测试看看!!

实例代码:

import os
import requests
import time

# 进度条模块
def progressbar(url,path):
 if not os.path.exists(path): # 看是否有该文件夹,没有则创建文件夹
  os.mkdir(path)
 start = time.time() #下载开始时间
 response = requests.get(url, stream=True)
 size = 0 #初始化已下载大小
 chunk_size = 1024 # 每次下载的数据大小
 content_size = int(response.headers['content-length']) # 下载文件总大小
 try:
 if response.status_code == 200: #判断是否响应成功
  print('Start download,[File size]:{size:.2f} MB'.format(size = content_size / chunk_size /1024)) #开始下载,显示下载文件大小
  filepath = path+'\Pikachu.jpg' #设置图片name,注:必须加上扩展名
  with open(filepath,'wb') as file: #显示进度条
  for data in response.iter_content(chunk_size = chunk_size):
   file.write(data)
   size +=len(data)
   print('\r'+'[下载进度]:%s%.2f%%' % ('>'*int(size*50/ content_size), float(size / content_size * 100)) ,end=' ')
 end = time.time() #下载结束时间
 print('Download completed!,times: %.2f秒' % (end - start)) #输出下载用时时间
 except:
 print('Error!')

def main():
 #下载皮卡丘图片
 url = 'https://img.moegirl.org/common/thumb/e/ed/%E7%9A%AE%E5%8D%A1%E4%B8%98%E4%B9%8B%E6%AD%8C.jpg/1200px-%E7%9A%AE%E5%8D%A1%E4%B8%98%E4%B9%8B%E6%AD%8C.jpg'
 path = r'E:\123' # 设置下载到本地的地址
 progressbar(url,path)

if __name__ == '__main__':
 main()

总结

到此这篇关于Python 给下载文件显示进度条和下载时间的文章就介绍到这了,更多相关python下载文件进度条下载时间内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python3读取zip文件信息的方法
May 22 Python
Python中操作符重载用法分析
Apr 29 Python
Python操作mysql数据库实现增删查改功能的方法
Jan 15 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
python自定义函数实现一个数的三次方计算方法
Jan 20 Python
PyQt5实现让QScrollArea支持鼠标拖动的操作方法
Jun 19 Python
python3.7 使用pymssql往sqlserver插入数据的方法
Jul 08 Python
Python-Seaborn热图绘制的实现方法
Jul 15 Python
用python写一个定时提醒程序的实现代码
Jul 22 Python
深入学习python多线程与GIL
Aug 26 Python
Python响应对象text属性乱码解决方案
Mar 31 Python
Django实现将一个字典传到前端显示出来
Apr 03 Python
python求前n个阶乘的和实例
Apr 02 #Python
python实现将字符串中的数字提取出来然后求和
Apr 02 #Python
python对指定字符串逆序的6种方法(小结)
Apr 02 #Python
在python中实现求输出1-3+5-7+9-......101的和
Apr 02 #Python
django中url映射规则和服务端响应顺序的实现
Apr 02 #Python
Python实现从N个数中找到最大的K个数
Apr 02 #Python
Python任务调度利器之APScheduler详解
Apr 02 #Python
You might like
php计算函数执行时间的方法
2015/03/20 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
PHP递归遍历文件夹去除注释并压缩php源代码的方法示例
2018/05/23 PHP
JavaScript 在线压缩和格式化收藏
2009/01/16 Javascript
jQuery中绑定事件的命名空间详解
2011/04/05 Javascript
使用js实现雪花飘落效果
2013/08/26 Javascript
Jquery实现仿腾讯娱乐频道焦点图(幻灯片)特效
2015/03/06 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
JavaScript对象参数的引用传递
2016/01/14 Javascript
Jquery实现纵向横向菜单
2016/01/24 Javascript
JS实现响应鼠标点击动画渐变弹出层效果代码
2016/03/25 Javascript
jQuery视差滚动效果网页实现方法经验总结
2016/09/29 Javascript
解析js如何获取css样式
2016/12/11 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
Vue 表单控件绑定的实现示例
2017/08/11 Javascript
Vue中使用webpack别名的方法实例详解
2018/06/19 Javascript
在Vant的基础上实现添加表单验证框架的方法示例
2018/12/05 Javascript
js控制随机数生成概率代码实例
2019/03/21 Javascript
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
python提取页面内url列表的方法
2015/05/25 Python
Python编程之string相关操作实例详解
2017/07/22 Python
python实现BackPropagation算法
2017/12/14 Python
Python学习笔记之Break和Continue用法分析
2019/08/14 Python
对Python获取屏幕截图的4种方法详解
2019/08/27 Python
python实现图像全景拼接
2020/03/27 Python
CAT鞋美国官网:CAT Footwear
2017/11/27 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
意大利和国际奢侈品牌购物网站:Suitnegozi.com
2021/01/15 全球购物
英语专业学生的自我评价
2013/12/30 职场文书
摄影专业毕业生求职信
2014/03/13 职场文书
药品营销专业毕业生自荐信
2014/07/02 职场文书
新课培训心得体会
2014/09/03 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
毕业论文答辩稿范文
2015/06/23 职场文书
开学第一天的感想
2015/08/10 职场文书
小学2016年第十八届推普周活动总结
2016/04/05 职场文书