【问题标题】:Stream a large file from URL straight into a gzip file将大文件从 URL 直接流式传输到 gzip 文件中
【发布时间】:2020-01-20 16:28:25
【问题描述】:

我想直接将大文件流式传输到 gzip 文件中,而不是将其全部下载到内存中然后压缩。这就是我已经走了多远(不起作用)。我知道如何在 python 中下载一个文件并保存,我知道如何压缩一个文件,它是流媒体部分不起作用。

注意:这个链接的 csv 不大,只是一个示例 url。

    import requests
    import zlib

    url = f"http://samplecsvs.s3.amazonaws.com/Sacramentorealestatetransactions.csv"

    with requests.get(url, stream=True) as r:
        compressor = zlib.compressobj()
        with open(save_file_path, 'wb') as f:
            f.write(compressor.compress(r.raw))

【问题讨论】:

    标签: python stream python-requests compression gzip


    【解决方案1】:

    好吧,我想通了:

    with requests.get(url, stream=True, verify=False) as r:
        if save_file_path.endswith('gz'):
            compressor = zlib.compressobj(9, zlib.DEFLATED, zlib.MAX_WBITS | 16)
            with open(save_file_path, 'wb') as f:
                for chunk in r.iter_content(chunk_size=1024*1024):
                    f.write(compressor.compress(chunk))
                f.write(compressor.flush())
        else:
            with open(save_file_path, 'wb') as f:
                shutil.copyfileobj(r.raw, f)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-06
      • 2021-11-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 2021-11-08
      • 1970-01-01
      相关资源
      最近更新 更多