You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将下载的文件直接写入zip压缩包,无需保存临时本地文件?

优化实现方案(无本地临时文件)

核心原理是借助io.BytesIO在内存中暂存下载的文件内容,直接写入压缩包,完全跳过本地磁盘读写步骤,代码更简洁,执行效率也更高。

优化后代码

import zipfile
import requests
from io import BytesIO

pics = ['url/1.jpg', 'url/2.jpg', 'url/3.jpg']
save_dir = '/directory'  # 避开内置关键词dir,避免命名冲突

with zipfile.ZipFile(f"{save_dir}/test.zip", 'w') as my_zip:
    for idx, pic_url in enumerate(pics, start=1):
        # 直接下载文件到内存
        resp = requests.get(pic_url, allow_redirects=True, timeout=10)
        # 获取文件后缀
        file_suffix = pic_url.split('.')[-1]
        # 直接将内存中的内容写入压缩包,命名为 序号.后缀
        my_zip.writestr(f"{idx}.{file_suffix}", resp.content)

改动说明

  • 移除了所有本地文件读写、删除逻辑,代码量减少近40%
  • 用enumerate替代range(len(pics))遍历,代码可读性更高
  • 避免了dir内置关键字作为变量名的冲突问题
  • 新增timeout参数避免请求无限挂起,健壮性更强
  • 全程仅在最后写入压缩包时产生一次磁盘IO,执行效率远高于原实现

内容的提问来源于stack exchange,提问作者Gir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 19:09:02