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快速查找算法应用实例
Sep 26 Python
Python实现从脚本里运行scrapy的方法
Apr 07 Python
基于python实现微信模板消息
Dec 21 Python
Python字符串处理实例详解
May 18 Python
Python3基于sax解析xml操作示例
May 22 Python
django js实现部分页面刷新的示例代码
May 28 Python
详解Python匿名函数(lambda函数)
Apr 19 Python
pytorch-RNN进行回归曲线预测方式
Jan 14 Python
浅谈Python中的继承
Jun 19 Python
python 爬虫爬取京东ps4售卖情况
Dec 18 Python
Python爬虫自动化爬取b站实时弹幕实例方法
Jan 26 Python
Python必备技巧之字符数据操作详解
Mar 23 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
PHP4实际应用经验篇(7)
2006/10/09 PHP
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
两款万能的php分页类
2015/11/12 PHP
PHP实现时间比较和时间差计算的方法示例
2017/07/24 PHP
Laravel框架生命周期与原理分析
2018/06/12 PHP
Gambit vs ForZe BO3 第一场 2.13
2021/03/10 DOTA
Jquery下判断Id是否存在的代码
2011/01/06 Javascript
Vue系列:通过vue-router如何传递参数示例
2017/01/16 Javascript
JavaScript实现的简单Tab点击切换功能示例
2018/07/06 Javascript
React注册倒计时功能的实现
2018/09/06 Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
2018/12/05 Javascript
layui 数据表格 点击分页按钮 监听事件的实例
2019/09/02 Javascript
python实现排序算法
2014/02/14 Python
Python中函数的用法实例教程
2014/09/08 Python
收藏整理的一些Python常用方法和技巧
2015/05/18 Python
Python中max函数用法实例分析
2015/07/17 Python
浅谈python为什么不需要三目运算符和switch
2016/06/17 Python
Python爬虫实现爬取京东手机页面的图片(实例代码)
2017/11/30 Python
python中多层嵌套列表的拆分方法
2018/07/02 Python
python输入整条数据分割存入数组的方法
2018/11/13 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
python调用摄像头的示例代码
2020/09/28 Python
使用分层画布来优化HTML5渲染的教程
2015/05/08 HTML / CSS
澳大利亚设计的婴儿和女孩的衣服:Oobi
2018/12/16 全球购物
意大利在线药房:Farmacia Loreto Gallo
2019/08/09 全球购物
新闻记者个人求职的自我评价
2013/11/28 职场文书
美发店5.1活动方案
2014/01/24 职场文书
出国留学自荐信模板
2015/03/06 职场文书
工作一年自我鉴定
2019/06/20 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
JDBC连接的六步实例代码(与mysql连接)
2021/05/12 MySQL
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js
Golang获取List列表元素的四种方式
2022/04/20 Golang
Ubuntu Server 安装Tomcat并配置systemctl
2022/04/28 Servers