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正则表达式re模块详细介绍
May 29 Python
Python中super关键字用法实例分析
May 28 Python
Python用imghdr模块识别图片格式实例解析
Jan 11 Python
pytorch中的embedding词向量的使用方法
Aug 18 Python
Django上线部署之IIS的配置方法
Aug 22 Python
python 实现将Numpy数组保存为图像
Jan 09 Python
Python MySQLdb 执行sql语句时的参数传递方式
Mar 04 Python
Python实现RabbitMQ6种消息模型的示例代码
Mar 30 Python
Python多线程thread及模块使用实例
Apr 28 Python
Python远程linux执行命令实现
Nov 11 Python
如何用python插入独创性声明
Mar 31 Python
Python序列化与反序列化相关知识总结
Jun 08 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
第八节 访问方式 [8]
2006/10/09 PHP
PHP实现生成唯一编号(36进制的不重复编号)
2014/07/01 PHP
PHP类的反射用法实例
2014/11/03 PHP
memcache一致性hash的php实现方法
2015/03/05 PHP
配置Nginx+PHP的正确思路与过程
2016/05/10 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
javascript radio 联动效果
2009/03/04 Javascript
键盘上一张下一张兼容IE/google/firefox等浏览器
2014/01/28 Javascript
jQuery学习笔记之总体架构
2014/06/03 Javascript
使用JQuery库提供的扩展功能实现自定义方法
2014/09/09 Javascript
jQuery中prev()方法用法实例
2015/01/08 Javascript
javascript中attachEvent用法实例分析
2015/05/14 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
2016/01/27 Javascript
jQuery UI插件实现百度提词器效果
2016/11/21 Javascript
layer实现弹窗提交信息
2016/12/12 Javascript
JavaScript代码判断输入的字符串是否含有特殊字符和表情代码实例
2017/08/17 Javascript
element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】
2018/11/20 Javascript
javascript for循环性能测试示例
2019/08/07 Javascript
javascript 数组精简技巧小结
2020/02/26 Javascript
JavaScript异步操作的几种常见处理方法实例总结
2020/05/11 Javascript
python实现定制交互式命令行的方法
2014/07/03 Python
Django中对数据查询结果进行排序的方法
2015/07/17 Python
python实现简单淘宝秒杀功能
2018/05/03 Python
Python3爬虫学习入门教程
2018/12/11 Python
python topk()函数求最大和最小值实例
2020/04/02 Python
Python的in,is和id函数代码实例
2020/04/18 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
HTML5拖拽的简单实例
2016/05/30 HTML / CSS
Interflora澳大利亚:同日鲜花速递
2019/06/25 全球购物
六十大寿答谢词
2014/01/12 职场文书
数学教育专业求职信
2014/07/22 职场文书
2014年教师德育工作总结
2014/11/10 职场文书
亮剑观后感
2015/06/05 职场文书
焦点访谈观后感
2015/06/11 职场文书
消防宣传语大全
2015/07/13 职场文书
《惊弓之鸟》教学反思
2016/02/20 职场文书