将一个大文件从URL直接流到gzip-fi

2024-06-16 10:25:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把一个大文件直接流到一个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))

Tags: 文件csv内存importhttpurl示例链接
1条回答
网友
1楼 · 发布于 2024-06-16 10:25:31

好吧,我想出来了:

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)

相关问题 更多 >