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基础教程之常用运算符
Aug 29 Python
Python写的一个简单监控系统
Jun 19 Python
Linux中Python 环境软件包安装步骤
Mar 31 Python
Python中使用装饰器来优化尾递归的示例
Jun 18 Python
Python3之读取连接过的网络并定位的方法
Apr 22 Python
一个可以套路别人的python小程序实例代码
Apr 09 Python
梅尔频率倒谱系数(mfcc)及Python实现
Jun 18 Python
Python 日志logging模块用法简单示例
Oct 18 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
python爬虫实现获取下一页代码
Mar 13 Python
使用jupyter notebook将文件保存为Markdown,HTML等文件格式
Apr 14 Python
python开发一款翻译工具
Oct 10 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入门的学习方法
2007/01/02 PHP
php 异常处理实现代码
2009/03/10 PHP
php 文件夹删除、php清除缓存程序
2009/08/25 PHP
用PHP编写和读取XML的几种方式
2013/01/12 PHP
PHP实现多进程并行操作的详解(可做守护进程)
2013/06/18 PHP
mongo Table类文件 获取MongoCursor(游标)的实现方法分析
2013/07/01 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
深入理解Javascript动态方法调用与参数修改的问题
2013/12/10 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
Vue.js每天必学之方法与事件处理器
2016/09/06 Javascript
node.js文件上传处理示例
2016/10/27 Javascript
Javascript实现倒计时(防页面刷新)实例
2016/12/13 Javascript
react学习笔记之state以及setState的使用
2017/12/07 Javascript
Django与Vue语法的冲突问题完美解决方法
2017/12/14 Javascript
VueCli3构建TS项目的方法步骤
2018/11/07 Javascript
微信小程序 select 下拉框组件功能
2019/09/09 Javascript
vue项目中使用vue-layer弹框插件的方法
2020/03/11 Javascript
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
编写Python脚本使得web页面上的代码高亮显示
2015/04/24 Python
python开发之函数定义实例分析
2015/11/12 Python
Python实现学生成绩管理系统
2020/04/05 Python
Python利用splinter实现浏览器自动化操作方法
2018/05/11 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
使用pickle存储数据dump 和 load实例讲解
2019/12/30 Python
Python如何存储数据到json文件
2020/03/09 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
tensorflow转换ckpt为savermodel模型的实现
2020/05/25 Python
html5本地存储_动力节点Java学院整理
2017/07/12 HTML / CSS
澳大利亚汽车零部件、音响及配件超市:Automotive Superstore
2018/06/19 全球购物
小组合作学习反思
2014/02/18 职场文书
门面房租房协议书
2014/12/01 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
离婚代理词范文
2015/05/23 职场文书
导游词之江苏溱潼古镇
2019/11/27 职场文书
python中的class_static的@classmethod的巧妙用法
2021/06/22 Python
python开发制作好看的时钟效果
2022/05/02 Python