pythonrequests怎么导入模块(Python3使用requests模块实现显示下载进度的方法详解)
pythonrequests怎么导入模块
Python3使用requests模块实现显示下载进度的方法详解本文实例讲述了Python3使用requests模块实现显示下载进度的方法。分享给大家供大家参考,具体如下:
一、配置request
1. 相关资料
请求关键参数:stream=True
。默认情况下,当你进行网络请求后,响应体会立即被下载。你可以通过 stream 参数覆盖这个行为,推迟下载响应体直到访问 Response.content
属性。
|
tarball_url = 'https://github.com/kennethreitz/requests/tarball/master' r = requests.get(tarball_url, stream = True ) |
此时仅有响应头被下载下来了,连接保持打开状态,因此允许我们根据条件获取内容:
|
if int (r.headers[ 'content-length' ]) < TOO_LONG: content = r.content ... |
进一步使用 Response.iter_content
和 Response.iter_lines
方法来控制工作流,或者以 Response.raw
从底层urllib3的 urllib3.HTTPResponse
|
from contextlib import closing with closing(requests.get( 'http://httpbin.org/get' , stream = True )) as r: # Do things with the response here. |
保持活动状态(持久连接)
归功于urllib3,同一会话内的持久连接是完全自动处理的,同一会话内发出的任何请求都会自动复用恰当的连接!
注意:只有当响应体的所有数据被读取完毕时,连接才会被释放到连接池;所以确保将 stream 设置为 False 或读取 Response 对象的 content 属性。
2. 下载文件并显示进度条
|
with closing(requests.get( self .url(), stream = True )) as response: chunk_size = 1024 # 单次请求最大值 content_size = int (response.headers[ 'content-length' ]) # 内容体总大小 progress = ProgressBar( self .file_name(), total = content_size, unit = "KB" , chunk_size = chunk_size, run_status = "正在下载" , fin_status = "下载完成" ) with open (file_name, "wb" ) as file : for data in response.iter_content(chunk_size = chunk_size): file .write(data) progress.refresh(count = len (data)) |
二、进度条类的实现
在Python3中,print()方法的默认结束符(end=' '),当调用完之后,光标自动切换到下一行,此时就不能更新原有输出。
将结束符改为“ ”,输出完成之后,光标会回到行首,并不换行。此时再次调用print()方法,就会更新这一行输出了。
结束符也可以使用“d”,为退格符,光标回退一格,可以使用多个,按需求回退。
在结束这一行输出时,将结束符改回“ ”或者不指定使用默认
下面是一个格式化的进度条显示模块。代码如下:
|
class ProgressBar( object ): def __init__( self , title, count = 0.0 , run_status = None , fin_status = None , total = 100.0 , unit = ' ', sep=' / ', chunk_size = 1.0 ): super (ProgressBar, self ).__init__() self .info = "【%s】%s %.2f %s %s %.2f %s" self .title = title self .total = total self .count = count self .chunk_size = chunk_size self .status = run_status or "" self .fin_status = fin_status or " " * len ( self .status) self .unit = unit self .seq = sep def __get_info( self ): # 【名称】状态 进度 单位 分割线 总数 单位 _info = self .info % ( self .title, self .status, self .count / self .chunk_size, self .unit, self .seq, self .total / self .chunk_size, self .unit) return _info def refresh( self , count = 1 , status = None ): self .count + = count # if status is not None: self .status = status or self .status end_str = " " if self .count > = self .total: end_str = ' ' self .status = status or self .fin_status print ( self .__get_info(), end = end_str) |
三、参考资料
http://cn.python-requests.org/en/latest/user/advanced.html
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/supercooly/article/details/51046561
- linux下python安装pip(在Docker中的ubuntu中安装Python3和Pip的问题)
- pythontime模块有哪些(Python3.5内置模块之time与datetime模块用法实例分析)
- python3安装编程环境(Python3 修改默认环境的方法)
- pythonmatplotlib画图流程(python3使用matplotlib绘制条形图)
- python实现螺旋矩阵(Python3实现的旋转矩阵图像算法示例)
- python3 代码解读(Python3列表内置方法大全及示例代码小结)
- python3编程过程(Python3模拟登录操作实例分析)
- python3web编程基础教程(python初学者,用python实现基本的学生管理系统python3代码实例)
- python3.x base64怎么加密解密(python3.x实现base64加密和解密)
- python爬虫request方法介绍(详解Python3网络爬虫二:利用urllib.urlopen向有道翻译发送数据获得翻译结果)
- pythonsocket教程(python3利用Socket实现通信的方法示例)
- python3常用内建函数(Python3中函数参数传递方式实例详解)
- python3.9.1如何安装模块(Python3.6中Twisted模块安装的问题与解决)
- 12步轻松搞定python装饰器(Python3.5装饰器典型案例分析)
- python简易版学生管理系统(python3.6实现学生信息管理系统)
- pythonpandas数据类型(Python3.5 Pandas模块之Series用法实例分析)
- 今日大雪,大雪养生这样做,一年都有好气色(大雪养生这样做)
- 粗盐是什么 粗盐的功效与作用(粗盐的功效与作用)
- 会 吃人 的客机 从天堂到地狱只需5分钟,图-104如何做到(会吃人的客机)
- 男人犯的错,为什么要女人来承担(为什么要女人来承担)
- 心理学 四个金蟾,哪个最招财 测你今生的运势有多棒(心理学四个金蟾)
- 吉善缘《聚宝金蟾》金蟾招财摆件 三足全铜蟾蜍客厅店铺开业礼品(吉善缘聚宝金蟾金蟾招财摆件)
热门推荐
- 面试的最后,HR问你还有什么问题要问,该怎么回答?
- linux时间同步ubuntu(在Ubuntu中使用NTP实现时间同步)
- mysql使用步骤(聊一聊MySQL角色Role功能)
- 开源asp.net(apache下支持asp.net的实现方法)
- python获取天气源(Python3爬虫之自动查询天气并实现语音播报)
- centos7怎么安装mysql(Centos7 mysql数据库安装及配置实现教程)
- laravel 模型(Laravel 模型关联基础教程详解)
- 详解从vue的组件传值着手观察者模式(详解从vue的组件传值着手观察者模式)
- css怎么给背景颜色设置模糊(CSS设置背景图片模糊内容不模糊的解决方法)
- springboot项目部署到docker(IDEA 通过docker插件发布springboot项目的详细教程)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9