python response.iter_content()的使用

在Python中使用requests模块下载大文件时,常常采用流式下载以节省内存。通过response.iter_content(chunk_size)可以实现这一目标,例如设定每次处理1024字节的数据块。对于一个67KB的ts文件,可以逐次处理直至完成下载。同样,对于16MB的zip文件,设定chunk_size为1MB,每下载1MB就保存一次,便于观察下载进度。
部署运行你感兴趣的模型镜像

使用requests模块下载文件时使用流氏下载,或者要查看文件的下载进度的时候会用到 response.iter_content()

def gettsfile(i):#传入待下载的ts文件序号,找到对应的下载地址下载
    url="http://y.downya.com/soft/MATLABchengxuyuyan_downyi.com.zip"
    user_agent="Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.81 Safari/537.36 SE 2.X MetaSr 1.0"
    headers={"User-Agent":user_agent}
    path=os.getcwd()
    with open(tfile[i],"wb") as fw:
        with requests.get(url,headers=headers,stream=True) as r:
            #print(r.headers)#此时只有响应头被下载,显示头部信息包括 文件类型,文件大小
            filesize = r.headers["Content-Length"]#通过headers获取文件的大小
            print("%s_%sbyte" % (tfile[i],filesize))#显示文件大小
            chunk_size=1024#1kb
            times=int(filesize)//chunk_size
            print(times)
            i=0
            for chunk in r.iter_content(chunk_size):
                print(i)
                i+=1
                fw.write(chunk)
        print("\n结束下载")

for chunk in r.iter_content(chunk_size):
上面的代码times等于i的最终值,个人感觉r.iter_content(chunk_size)指定了每次下载1024字节的数据放到chunk里面,后面操作完了它会自动更新
如下载004这个ts文件,大小是68808byte,67kb,times=67,i从0开始计算直到67结束
在这里插入图片描述
url=“http://y.downya.com/soft/MATLABchengxuyuyan_downyi.com.zip”
上面的url指定的zip文件16m,当chunk_size=1024*1024下载时如下图所示,每下载1m保存一次。
在这里插入图片描述

您可能感兴趣的与本文相关的镜像

Python3.10

Python3.10

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值