zoukankan      html  css  js  c++  java
  • 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("下载成功")
    
  • 相关阅读:
    Android -- DiskLruCache
    Android -- EventBus解析
    Android -- Annotation
    Ubuntu 1604 安装配置 kafka,并配置开机自启(systemctl)
    zookeeper/kafka的部署
    pdf 中内容的坐标系
    C# 获取Windows 设备信息
    C#读取Word指定页的内容
    再看C# ThreadPool与Task的认识总结
    同步IO、异步IO、阻塞IO、非阻塞IO之间的联系与区别
  • 原文地址:https://www.cnblogs.com/zhenzi0322/p/14343400.html
Copyright © 2011-2022 走看看