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的几条建议分享
Feb 10 Python
Python实例分享:快速查找出被挂马的文件
Jun 08 Python
Python 判断是否为质数或素数的实例
Oct 30 Python
Python实现简单网页图片抓取完整代码实例
Dec 15 Python
python3爬取淘宝信息代码分析
Feb 10 Python
Python使用try except处理程序异常的三种常用方法分析
Sep 05 Python
Python3对称加密算法AES、DES3实例详解
Dec 06 Python
Python操作MySQL数据库的两种方式实例分析【pymysql和pandas】
Mar 18 Python
Python匿名函数及应用示例
Apr 09 Python
python实现图像检索的三种(直方图/OpenCV/哈希法)
Aug 08 Python
详解pytorch中squeeze()和unsqueeze()函数介绍
Sep 03 Python
用Python自动清理电脑内重复文件,只要10行代码(自动脚本)
Jan 09 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去掉URL网址中带有PHPSESSID的配置方法
2014/07/08 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php计划任务之验证是否有多个进程调用同一个job的方法
2015/12/07 PHP
JavaScript定义类或函数的几种方式小结
2011/01/09 Javascript
基于jquery的跟随屏幕滚动代码
2012/07/24 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
js图片轮播特效代码分享
2015/09/07 Javascript
详解JavaScript异步编程中jQuery的promise对象的作用
2016/05/03 Javascript
JS组件Bootstrap Table布局详解
2016/05/27 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
2019/07/10 Javascript
element的el-table中记录滚动条位置的示例代码
2019/11/06 Javascript
jquery实现上传文件进度条
2020/03/26 jQuery
从零学python系列之浅谈pickle模块封装和拆封数据对象的方法
2014/05/23 Python
Python使用Beautiful Soup包编写爬虫时的一些关键点
2016/01/20 Python
Python MySQL数据库连接池组件pymysqlpool详解
2017/07/07 Python
从django的中间件直接返回请求的方法
2018/05/30 Python
Flask框架各种常见装饰器示例
2018/07/17 Python
python实现超市商品销售管理系统
2019/10/25 Python
pytorch对梯度进行可视化进行梯度检查教程
2020/02/04 Python
Python标准库:内置函数max(iterable, *[, key, default])说明
2020/04/25 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
The Body Shop美体小铺西班牙官网:天然化妆品
2019/06/21 全球购物
高校辅导员推荐信范文
2013/12/25 职场文书
电大本科自我鉴定
2014/02/05 职场文书
《宋庆龄故居的樟树》教学反思
2014/04/07 职场文书
2014年村支部书记四风对照检查材料思想汇报
2014/10/02 职场文书
客房服务员岗位职责
2015/02/09 职场文书
高中政治教学反思
2016/02/23 职场文书
SQLServer2019 数据库的基本使用之图形化界面操作的实现
2021/04/08 SQL Server
新手入门Mysql--概念
2021/06/18 MySQL
SQL实战演练之网上商城数据库商品类别数据操作
2021/10/24 MySQL
python使用shell脚本创建kafka连接器
2022/04/29 Python
SpringBoot前端后端分离之Nginx服务器下载安装过程
2022/08/14 Servers