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 相关文章推荐
在Windows8上的搭建Python和Django环境
Jul 03 Python
python WindowsError的错误代码详解
Jul 23 Python
Python制作词云的方法
Jan 03 Python
Python判断变量名是否合法的方法示例
Jan 28 Python
Python3将数据保存为txt文件的方法
Sep 12 Python
Python中Subprocess的不同函数解析
Dec 10 Python
Python定义函数时参数有默认值问题解决
Dec 19 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
python 图像插值 最近邻、双线性、双三次实例
Jul 05 Python
python Selenium 库的使用技巧
Oct 16 Python
Python使用BeautifulSoup4修改网页内容
May 20 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
简单采集了yahoo的一些数据
2007/02/14 PHP
php 301转向实现代码
2008/09/18 PHP
使用PHP导出Word文档的原理和实例
2013/10/21 PHP
php多次include后导致全局变量global失效的解决方法
2015/02/28 PHP
php中bind_param()函数用法分析
2017/03/28 PHP
PHP设计模式之适配器模式(Adapter)原理与用法详解
2019/12/12 PHP
PHP http请求超时问题解决方案
2020/11/13 PHP
jQuery的写法不同导致的兼容性问题的解决方法
2010/07/29 Javascript
验证控件与Button的OnClientClick事件详细解析
2013/12/04 Javascript
JavaScript插件化开发教程(六)
2015/02/01 Javascript
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
Java遍历集合方法分析(实现原理、算法性能、适用场合)
2016/04/25 Javascript
新闻上下滚动jquery 超简洁(必看篇)
2017/01/21 Javascript
BootStrap与Select2使用小结
2017/02/17 Javascript
原生JS中slice()方法和splice()区别
2017/03/06 Javascript
vuex与组件联合使用的方法
2018/05/10 Javascript
详解JavaScript中关于this指向的4种情况
2019/04/18 Javascript
vue仿ios列表左划删除
2019/09/26 Javascript
python交互式图形编程实例(二)
2017/11/17 Python
python实现将汉字保存成文本的方法
2018/11/16 Python
实例详解Python模块decimal
2019/06/26 Python
python3射线法判断点是否在多边形内
2019/06/28 Python
三步解决python PermissionError: [WinError 5]拒绝访问的情况
2020/04/22 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
自我鉴定范文200字
2013/10/02 职场文书
主题婚礼策划方案
2014/02/10 职场文书
成龙霸王洗发水广告词
2014/03/14 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
跳蚤市场口号
2014/06/13 职场文书
教师节倡议书
2014/08/30 职场文书
2015年后勤工作总结范文
2015/04/08 职场文书
2015年路政工作总结
2015/05/22 职场文书
数学复习课教学反思
2016/02/18 职场文书
Python学习之异常中的finally使用详解
2022/03/16 Python