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

Python3.9环境下如何不解压直接保存请求返回的完整Zip压缩包

Python直接保存原始Zip压缩包的实现方案

失效原因说明

ZipFile.write()是用来将本地文件添加到压缩包内的方法,并不支持将读取到的网络压缩包二进制流直接存储为本地Zip文件,这是你之前尝试失效的原因。

核心实现逻辑

你不需要使用zipfile模块解析压缩包,直接将GET请求返回的二进制响应内容写入本地.zip格式文件,即可保留原始压缩包的完整内容,不需要额外解压操作。

修改后的完整代码

import requests
import os 
import json
from robot.api.deco import keyword
import io

def download_file(url, save_filename="downloaded.zip"):
    headers=   {"Auth": "{abcd}", 
                "accept": "*/*",               
               "accept-encoding": "gzip;deflate;br" }
    response = requests.request("GET", url, headers = headers)
    
    # 确保存储目录存在,避免路径不存在报错
    save_dir = os.path.join(os.getcwd(), 'downloads')
    os.makedirs(save_dir, exist_ok=True)
    # 拼接完整存储路径
    save_path = os.path.join(save_dir, save_filename)
    
    # 直接写入二进制响应内容即可保存原始Zip包
    with open(save_path, 'wb') as f:
        f.write(response.content)
    
    return response.status_code

可选优化:自动获取接口返回的原始文件名

如果接口响应头Content-Disposition字段中携带了原始文件名,可以用以下代码解析自动使用原文件名存储,不需要手动传文件名:

from urllib.parse import unquote

def get_filename_from_header(response):
    disposition = response.headers.get('Content-Disposition', '')
    if 'filename=' in disposition:
        filename = disposition.split('filename=')[1].strip('"')
        return unquote(filename)
    return "downloaded.zip"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 03:06:01