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之关于循环的小伎俩
Oct 02 Python
在Python下使用Txt2Html实现网页过滤代理的教程
Apr 11 Python
Python制作钉钉加密/解密工具
Dec 07 Python
python获取当前用户的主目录路径方法(推荐)
Jan 12 Python
python3获取当前文件的上一级目录实例
Apr 26 Python
python实现nao机器人身体躯干和腿部动作操作
Apr 29 Python
django多对多表的创建,级联删除及手动创建第三张表
Jul 25 Python
Python 日期的转换及计算的具体使用详解
Jan 16 Python
jupyter notebook参数化运行python方式
Apr 10 Python
Python如何实现爬取B站视频
May 20 Python
python实现登录与注册系统
Nov 30 Python
Python中super().__init__()测试以及理解
Dec 06 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数据结构与算法(PHP描述) 快速排序 quick sort
2012/06/21 PHP
PHP使用redis实现统计缓存mysql压力的方法
2015/11/14 PHP
js基于qrcode.js生成二维码的方法【附demo插件源码下载】
2016/12/28 PHP
thinkPHP3.2.3结合Laypage实现的分页功能示例
2018/05/28 PHP
YII2框架中behavior行为的理解与使用方法示例
2020/03/13 PHP
使用Modello编写JavaScript类
2006/12/22 Javascript
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
jquery中dom操作和事件的实例学习-表单验证
2011/11/30 Javascript
jquery入门—访问DOM对象方法
2013/01/07 Javascript
一个仿糯米弹框效果demo
2014/07/22 Javascript
Javscript调用iframe框架页面中函数的方法
2014/11/01 Javascript
Node.js事件驱动
2015/06/18 Javascript
Jquery结合HTML5实现文件上传
2015/06/25 Javascript
JavaScript生成SQL查询表单的方法
2015/08/13 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
浅析微信扫码登录原理(小结)
2018/10/29 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
[38:31]完美世界DOTA2联赛PWL S3 Magma vs GXR 第一场 12.13
2020/12/17 DOTA
Python运用于数据分析的简单教程
2015/03/27 Python
简析Python的闭包和装饰器
2016/02/26 Python
关于Python 3中print函数的换行详解
2017/08/08 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
使用python进行拆分大文件的方法
2018/12/10 Python
Python 3.6 -win64环境安装PIL模块的教程
2019/06/20 Python
django框架cookie和session用法实例详解
2019/12/10 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
python 函数嵌套及多函数共同运行知识点讲解
2020/03/03 Python
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
美国巧克力喷泉品牌:Sephra
2019/05/05 全球购物
自动化工程专业个人应聘自荐信
2013/09/26 职场文书
财务人员担保书
2014/05/13 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
2015年大学生实习评语
2015/03/25 职场文书
素质拓展训练感想
2015/08/07 职场文书
MySQL创建高性能索引的全步骤
2021/05/02 MySQL
基于Redis位图实现用户签到功能
2021/05/08 Redis