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 相关文章推荐
在python的WEB框架Flask中使用多个配置文件的解决方法
Apr 18 Python
python快速查找算法应用实例
Sep 26 Python
Django权限机制实现代码详解
Feb 05 Python
python3.x上post发送json数据
Mar 04 Python
Python3.6连接Oracle数据库的方法详解
May 18 Python
为什么str(float)在Python 3中比Python 2返回更多的数字
Oct 16 Python
解决Pycharm后台indexing导致不能run的问题
Jun 27 Python
Django Rest framework频率原理与限制
Jul 26 Python
django正续或者倒序查库实例
May 19 Python
使用SQLAlchemy操作数据库表过程解析
Jun 10 Python
Django项目创建及管理实现流程详解
Oct 13 Python
Python jieba结巴分词原理及用法解析
Nov 05 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/01/29 PHP
PHP获得数组交集与差集的方法
2015/06/10 PHP
yum命令安装php7和相关扩展
2016/07/04 PHP
浅谈php中变量的数据类型判断函数
2017/03/04 PHP
javascript 进度条 实现代码
2009/07/30 Javascript
extjs 初始化checkboxgroup值的代码
2011/09/21 Javascript
JavaScript中json对象和string对象之间相互转化
2012/12/26 Javascript
谈谈js中的prototype及prototype属性解释和常用方法
2015/11/25 Javascript
Nodejs中的this详解
2016/03/26 NodeJs
Javascript HTML5 Canvas实现的一个画板
2020/04/12 Javascript
jQuery中Nicescroll滚动条插件的用法
2016/11/10 Javascript
微信开发之调起摄像头、本地展示图片、上传下载图片实例
2016/12/08 Javascript
vue中mint-ui环境搭建详细介绍
2017/04/06 Javascript
JS中Safari浏览器中的Date
2017/07/17 Javascript
vue双向绑定数据限制长度的方法
2019/11/04 Javascript
JS实现秒杀倒计时特效
2020/01/02 Javascript
vue学习笔记之slot插槽基本用法实例分析
2020/02/01 Javascript
[02:21]十步杀一人,千里不留行——DOTA2全新英雄天涯墨客展示
2018/08/29 DOTA
Python多线程实例教程
2014/09/06 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
基于python元祖与字典与集合的粗浅认识
2017/08/23 Python
Python 通过调用接口获取公交信息的实例
2018/12/17 Python
python+opencv 读取文件夹下的所有图像并批量保存ROI的方法
2019/01/10 Python
在Python 不同级目录之间模块的调用方法
2019/01/19 Python
Python坐标线性插值应用实现
2019/11/13 Python
python中安装django模块的方法
2020/03/12 Python
Ubuntu配置Pytorch on Graph (PoG)环境过程图解
2020/11/19 Python
世界上最受欢迎的钓鱼诱饵:Rapala
2019/05/02 全球购物
物理系毕业生自荐信
2013/11/01 职场文书
2014年寒假社会实践活动心得体会
2014/04/07 职场文书
《画风》教学反思
2014/04/16 职场文书
运动员口号
2014/06/09 职场文书
2014年银行员工年终自我评价
2014/09/19 职场文书
夫妻分居协议书范文
2014/11/26 职场文书
2015年幼儿园教研活动总结
2015/03/25 职场文书
HTML常用标签超详细整理
2022/03/19 HTML / CSS