Python 给下载文件显示进度条和下载时间的实现
时间:2022-07-28
本文章向大家介绍Python 给下载文件显示进度条和下载时间的实现,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
大家在下载文件时能够显示下载进度和时间非常好,其实实现它方法很简单,这里我写了个进度条的模块,其中还附带上了运行时间也就是下载时间了。
该模块调用了三个库:
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,到最后获取文件的总大小,即可完成我们的功能实现了!.
通过上面这个函数我们就实现了简单的进度条以及所需时间的功能,我们用了两个参数,我们下载个皮卡丘图片来试试效果:
效果还不错~~注:[下载进度]后面的‘ ‘是有动态显示的,这里可能看不到,可以在自己的环境下测试看看!!
实例代码:
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:3' # 设置下载到本地的地址
progressbar(url,path)
if __name__ == '__main__':
main()
总结
到此这篇关于Python 给下载文件显示进度条和下载时间的文章就介绍到这了,更多相关python下载文件进度条下载时间内容请搜索ZaLou.Cn以前的文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!
- python的with语句,超级强大
- “AS3.0高级动画编程”学习:第二章转向行为(上)
- Linux下性能调试工具-top和sar运维笔记
- Apache+wsgi+flask部署
- “勒索病毒”到底会勒索啥,尽可以做到让全球对之恐惧无奈!
- 解决win10 关键错误开始菜单和cortana无法工作 的问题(转-真的成功了)
- “AS3.0高级动画编程”学习:第二章转向行为(下)
- windows系统中eclipse C开发环境的架设
- 5个酷毙的Python工具
- ”盒模型“之如何防止边框和内边距把元素撑开
- excel中的不同类型图表叠加
- 这几天遇到的关于IE6/sql2008/win2003的奇怪bug
- 基于Web的工作流管理系统的设计与实现
- 这是对position讲解最通俗易懂的版本了。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 因str_replace导致的注入问题总结
- laravel框架中间件 except 和 only 的用法示例
- 浅析Python 多行匹配模式
- PHP命名空间定义与用法实例分析
- php array_chunk()函数用法与注意事项
- Laravel如何同时连接多个数据库详解
- PHP面向对象程序设计中的self、static、parent关键字用法分析
- php实现简单的守护进程创建、开启与关闭操作
- 关于CentOs系统自带python和yum卸载后的解决办法
- php5对象复制、clone、浅复制与深复制实例详解
- Linux命令行快速技巧之定位一个文件的办法
- ubuntu中python调用C/C++办法之动态链接库详解
- linux中使用boost.python调用c++动态库的办法
- 在Linux系统下上传项目到码云的办法
- PHP global全局变量经典应用与注意事项分析【附$GLOBALS用法对比】 原创