You need to enable JavaScript to run this app. Python如何从URL下载ZIP仅保存不解压?附OverflowError报错解决
优惠活动
大模型
产品
解决方案
定价
更多

Python如何从URL下载ZIP仅保存不解压?附OverflowError报错解决

代码修改说明

核心调整思路

  • 移除所有ZIP解压相关逻辑:删除zipfile模块的导入、解压代码块,全程不对ZIP内容做读取、解压操作
  • 解决OverflowError报错:放弃一次性读取整个文件到内存的写法,改用分块流式写入的方式,适配大文件下载场景,规避整数读取上限问题
  • 直接将下载的二进制流保存为本地原始ZIP文件,无额外加工

具体修改细节

  • 删掉冗余依赖:移除from zipfile import ZipFile导入,同时不再需要BytesIO相关引用(原代码未导入BytesIO本身也会触发运行报错)
  • 修正原代码的缩进格式错误
  • 将原解压逻辑替换为本地文件写入逻辑,保存路径需指定到具体的ZIP文件路径,不能仅填写目标文件夹

可直接运行的修改后代码

from urllib.request import urlopen

zipurl = 'https://opendata.geoportal.gov.pl/prg/adresy/PunktyAdresowe/POLSKA.zip'
# 指定ZIP文件的完整保存路径,可根据实际需求修改文件名
save_zip_path = r'/home/gis/adresypolska/POLSKA.zip'

with urlopen(zipurl) as resp:
    # 分块10MB读写,避免大文件触发内存溢出、整数读取超限报错
    with open(save_zip_path, 'wb') as f:
        while chunk := resp.read(10 * 1024 * 1024):
            f.write(chunk)

注意事项

  • 分块大小可根据网络环境调整,当前10MB的分块设置远低于Python socket读取的整数上限,能稳定规避原报错
  • 代码全程未引入解压流程,下载完成后本地留存的就是完整的原始ZIP压缩包,不会自动触发解压操作
  • 需提前确保保存路径的父目录存在(比如本例中/home/gis/adresypolska目录需提前创建,否则会触发文件路径不存在的报错)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.09 10:15:02