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的接口测试框架实例
Nov 04 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
Jan 20 Python
python 迭代器和iter()函数详解及实例
Mar 21 Python
python交互式图形编程实例(三)
Nov 17 Python
python实现简单淘宝秒杀功能
May 03 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
May 16 Python
python实现随机梯度下降法
Mar 24 Python
浅谈python中拼接路径os.path.join斜杠的问题
Oct 23 Python
python浪漫表白源码
Apr 05 Python
关于 Python opencv 使用中的 ValueError: too many values to unpack
Jun 28 Python
python 决策树算法的实现
Oct 09 Python
ROS系统将python包编译为可执行文件的简单步骤
Jul 25 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 sprintf()函数用例解析
2011/05/18 PHP
PHP实现冒泡排序的简单实例
2016/05/26 PHP
Yii列表定义与使用分页方法小结(3种方法)
2016/07/15 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
href下载文件根据id取url并下载
2014/05/28 Javascript
javascript实现Email邮件显示与删除功能
2015/11/21 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
js动态引入的四种方法
2018/05/05 Javascript
vue中子组件调用兄弟组件方法
2018/07/06 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
小程序实现上传视频功能
2020/08/18 Javascript
WebStorm中如何将自己的代码上传到github示例详解
2020/10/28 Javascript
JavaScript实现随机点名小程序
2020/10/29 Javascript
Python2.x中文乱码问题解决方法
2015/06/02 Python
让Python代码更快运行的5种方法
2015/06/21 Python
详解python OpenCV学习笔记之直方图均衡化
2018/02/08 Python
python找出完数的方法
2018/11/12 Python
python爬虫 基于requests模块发起ajax的get请求实现解析
2019/08/20 Python
Python 存取npy格式数据实例
2020/07/01 Python
django rest framework使用django-filter用法
2020/07/15 Python
openCV提取图像中的矩形区域
2020/07/21 Python
Python爬虫获取豆瓣电影并写入excel
2020/07/31 Python
python批量提取图片信息并保存的实现
2021/02/05 Python
python中if嵌套命令实例讲解
2021/02/25 Python
amazeui 验证按钮扩展的实现
2020/08/21 HTML / CSS
Crocs卡骆驰洞洞鞋日本官方网站:Crocs日本
2016/08/25 全球购物
Hotels.com南非:酒店预订
2017/11/02 全球购物
碧欧泉Biotherm加拿大官方网站:法国高端护肤品牌
2019/10/18 全球购物
澳大利亚美容产品及化妆品在线:Activeskin
2020/06/03 全球购物
网络信息管理员岗位职责
2014/01/05 职场文书
家电业务员岗位职责
2014/03/10 职场文书
民事诉讼代理授权委托书
2014/10/11 职场文书
综合实践活动报告
2015/02/05 职场文书
「约定的梦幻岛」作画发布诺曼生日新绘
2022/03/21 日漫