Python之使用requests处理超大文件

在我们开发过程中可能会遇到在下载文件的时候需要下载超大的文件。那这时候怎么办才好呢

直接全部下载的话, 文件过大, 可能会造成内存不足等问题。

如果你的requests模块没有安装的话就使用pip install requests安装一下。

常规下载

import requests

url = 'http://xxx.com/xxx.zip'
response = requests.get(url)
if response.status_code == 200:
    with open('./xx.zip', 'wb') as fp:
        fp.write(response.content)
    print("下载成功")

这种方式下载在下载小文件的时候会很快,但是在下载大点的文件的时候就会变得慢了。

下载超大文件解决方式

使用requestsstream模式。

第一种方式

把文件分成一块一块的遍历要下载的内容。

import requests

url = 'http://xxx.com/xxx.zip'
response = requests.get(url=url, stream=True)
if response.status_code == 200:
    chunk_size = 1024*4
    with open('xxx.zip', 'wb') as f:
        for chunk in response.iter_content(chunk_size=chunk_size):
            if chunk:
                f.write(chunk)
    print("下载成功")

第二种方式

把文件分成一行一行的遍历要下载的内容。

import requests

url = 'http://xxx.com/xxx.zip'
chunk_size = 1024 * 4
with requests.get(url, stream=True) as req:
    with open('xx.zip', 'wb') as f:
        for chunk in req.iter_content(chunk_size=chunk_size):
            if chunk:
                f.write(chunk)
print("下载成功")