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装饰器decorator用法实例
Nov 10 Python
Python中shutil模块的常用文件操作函数用法示例
Jul 05 Python
用Python将动态GIF图片倒放播放的方法
Nov 02 Python
详解python3实现的web端json通信协议
Dec 29 Python
Python抓取框架Scrapy爬虫入门:页面提取
Dec 01 Python
numpy中实现二维数组按照某列、某行排序的方法
Apr 04 Python
Django forms组件的使用教程
Oct 08 Python
Python 串口读写的实现方法
Jun 12 Python
使用django的objects.filter()方法匹配多个关键字的方法
Jul 18 Python
将python字符串转化成长表达式的函数eval实例
May 11 Python
Python批量处理csv并保存过程解析
May 16 Python
浅谈Python程序的错误:变量未定义
Jun 02 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中ltrim()、rtrim()与trim()删除字符空格实例
2014/11/25 PHP
thinkPHP中session()方法用法详解
2016/12/08 PHP
PHP PDOStatement::errorInfo讲解
2019/01/31 PHP
详解PHP素材图片上传、下载功能
2019/04/12 PHP
jQuery操作表格(table)的常用方法、技巧汇总
2014/04/12 Javascript
jQuery中:last选择器用法实例
2014/12/30 Javascript
AngularJS的一些基本样式初窥
2015/07/27 Javascript
基于Jquery实现仿百度百科右侧导航代码附源码下载
2015/11/27 Javascript
jQuery插件实现文字无缝向上滚动效果代码
2016/02/25 Javascript
Bootstrap和Angularjs配合自制弹框的实例代码
2016/08/24 Javascript
JavaScript触发onScroll事件的函数节流详解
2016/12/14 Javascript
jQuery的三种bind/One/Live/On事件绑定使用方法
2017/02/23 Javascript
利用ES6语法重构React组件详解
2017/03/02 Javascript
详解node.js搭建代理服务器请求数据
2017/04/08 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
详解angularjs4部署文件过大解决过程
2018/12/05 Javascript
小程序实现多个选项卡切换
2020/06/19 Javascript
python下函数参数的传递(参数带星号的说明)
2010/09/19 Python
Python搭建FTP服务器的方法示例
2018/01/19 Python
详解python爬虫系列之初识爬虫
2019/04/06 Python
快速解决pyqt5窗体关闭后子线程不同时退出的问题
2019/06/19 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
Tensorflow获取张量Tensor的具体维数实例
2020/01/19 Python
TensorFlow命名空间和TensorBoard图节点实例
2020/01/23 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
Marc O’Polo俄罗斯官方在线商店:德国高端时尚品牌
2019/12/26 全球购物
写出一个方法实现冒泡排序
2016/07/08 面试题
经理职责范文
2013/11/08 职场文书
高三毕业生自我鉴定
2013/12/20 职场文书
酒店保安领班职务说明书
2014/03/04 职场文书
揭牌仪式主持词
2014/03/19 职场文书
高中班主任心得体会
2016/01/07 职场文书
Java练习之潜艇小游戏的实现
2022/03/16 Java/Android
详细介绍Java中的CyclicBarrier
2022/04/13 Java/Android