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调用短信猫控件实现发短信功能实例
Jul 04 Python
python使用pyhook监控键盘并实现切换歌曲的功能
Jul 18 Python
Python简单进程锁代码实例
Apr 27 Python
在Python 3中实现类型检查器的简单方法
Jul 03 Python
Python的GUI框架PySide的安装配置教程
Feb 16 Python
Python reduce()函数的用法小结
Nov 15 Python
使用python编写udp协议的ping程序方法
Apr 22 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
判断python字典中key是否存在的两种方法
Aug 10 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
Mar 11 Python
使用pyinstaller打包PyQt4程序遇到的问题及解决方法
Jun 24 Python
python爬虫的一个常见简单js反爬详解
Jul 09 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数组实例总结与说明
2011/08/23 PHP
PHP jpgraph库的配置及生成统计图表:折线图、柱状图、饼状图
2017/05/15 PHP
jquery获取ASP.NET服务器端控件dropdownlist和radiobuttonlist生成客户端HTML标签后的value和text值
2010/06/28 Javascript
打印json对象的内容及JSON.stringify函数应用
2013/03/29 Javascript
js实现的复制兼容chrome和IE
2014/04/03 Javascript
jquery实现侧边弹出的垂直导航
2014/12/09 Javascript
对象题目的一个坑 理解Javascript对象
2015/12/22 Javascript
jquery插入兄弟节点的操作方法
2016/12/07 Javascript
js css3实现图片拖拽效果
2017/03/04 Javascript
Angular2使用Angular-CLI快速搭建工程(二)
2017/05/21 Javascript
JS面向对象的程序设计相关知识小结
2018/05/26 Javascript
JavaScript类的继承方法小结【组合继承分析】
2018/07/11 Javascript
NestJs 静态目录配置详解
2019/03/12 Javascript
在vue项目中使用codemirror插件实现代码编辑器功能
2019/08/27 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
python链接oracle数据库以及数据库的增删改查实例
2018/01/30 Python
python实现自动发送邮件
2018/06/20 Python
Python 3 实现定义跨模块的全局变量和使用教程
2019/07/07 Python
python飞机大战 pygame游戏创建快速入门详解
2019/12/17 Python
pytorch中的自定义反向传播,求导实例
2020/01/06 Python
打包PyQt5应用时的注意事项
2020/02/14 Python
python可以用哪些数据库
2020/06/22 Python
使用 prometheus python 库编写自定义指标的方法(完整代码)
2020/06/29 Python
PyTorch安装与基本使用详解
2020/08/31 Python
Django如何实现防止XSS攻击
2020/10/13 Python
css3 transform过渡抖动问题解决
2020/10/23 HTML / CSS
Mio Skincare法国官网:身体紧致及孕期身体护理
2018/04/04 全球购物
社区党员先进事迹
2014/01/22 职场文书
《小猪家的桃花树》教学反思
2014/04/11 职场文书
试用期转正后的自我评价
2014/09/21 职场文书
“向国旗敬礼”活动策划方案(4篇)
2014/09/27 职场文书
银行党员批评与自我批评
2014/10/15 职场文书
暑假安全保证书
2015/02/28 职场文书
公司承诺书格式范文
2015/04/28 职场文书