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 Django(图文)
Nov 04 Python
Python入门篇之字典
Oct 17 Python
Python实现的文本编辑器功能示例
Jun 30 Python
Python简单实现控制电脑的方法
Jan 22 Python
PYTHON基础-时间日期处理小结
May 05 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
python 将日期戳(五位数时间)转换为标准时间
Jul 11 Python
pandas分组聚合详解
Apr 10 Python
使用keras框架cnn+ctc_loss识别不定长字符图片操作
Jun 29 Python
python 装饰器的基本使用
Jan 13 Python
python3实现无权最短路径的方法
May 12 Python
Python OpenCV实现传统图片格式与base64转换
Jun 13 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对gzip文件或者字符串解压实例参考
2008/07/25 PHP
php写的带缓存数据功能的mysqli类
2012/09/06 PHP
关于php内存不够用的快速解决方法
2013/10/26 PHP
19个超实用的PHP代码片段
2014/03/14 PHP
PHP实现抓取Google IP并自动修改hosts文件
2015/02/12 PHP
php实现有序数组旋转后寻找最小值方法
2018/09/27 PHP
My Desktop :) 桌面式代码
2008/12/29 Javascript
基于MVC3方式实现下拉列表联动(JQuery)
2013/09/02 Javascript
js实现网页倒计时、网站已运行时间功能的代码3例
2014/04/14 Javascript
js实现精美的图片跟随鼠标效果实例
2015/05/16 Javascript
JS小数运算出现多为小数问题的解决方法
2016/06/02 Javascript
AngularJS基础 ng-mouseenter 指令示例代码
2016/08/02 Javascript
原生js实现tab选项卡切换
2020/03/23 Javascript
javascript中的后退和刷新实现方法
2016/11/10 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
vue配置多页面的实现方法
2018/05/22 Javascript
Vue项目引发的「过滤器」使用教程
2019/03/12 Javascript
简单讲解Python中的数字类型及基本的数学计算
2016/03/11 Python
Django REST为文件属性输出完整URL的方法
2017/12/18 Python
python去掉空白行的多种实现代码
2018/03/19 Python
python实现H2O中的随机森林算法介绍及其项目实战
2019/08/29 Python
python多继承(钻石继承)问题和解决方法简单示例
2019/10/21 Python
pytorch中的weight-initilzation用法
2020/06/24 Python
css3实现画半圆弧线的示例代码
2017/11/06 HTML / CSS
Pottery Barn阿联酋:购买家具、家居装饰及更多
2019/12/08 全球购物
麦当劳印度网上订餐:McDelivery
2020/03/16 全球购物
实习生自我评价
2014/01/18 职场文书
劳动工资科岗位职责范本
2014/03/02 职场文书
2014三八妇女节活动总结范文四篇
2014/03/09 职场文书
法律意见书范本
2015/06/04 职场文书
导游词之无锡丝业博物馆
2019/11/12 职场文书
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python
Python Pandas pandas.read_sql函数实例用法
2021/06/21 Python
「回转企鹅罐」10周年纪念展「輪るピングドラム展」海报公开
2022/03/22 日漫
MySQL创建管理RANGE分区
2022/04/13 MySQL
python数据分析之单因素分析线性拟合及地理编码
2022/06/25 Python