首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zipfile:如何下载zipfile并保存而不解压?

Zipfile:如何下载zipfile并保存而不解压?
EN

Stack Overflow用户
提问于 2021-01-11 21:34:09
回答 1查看 123关注 0票数 0

我想从url下载一个zipfile并保存到某个地方。我不想提取我的文件,这是我的问题。我有一个下载zipfile和提取文件的代码,但我只想下载和保存。我应该改变什么?

代码语言:javascript
复制
from urllib.request import urlopen
from zipfile import ZipFile


  zipurl = 'https://opendata.geoportal.gov.pl/prg/adresy/PunktyAdresowe/POLSKA.zip'
    with urlopen(zipurl) as zipresp:
        with ZipFile(BytesIO(zipresp.read())) as zfile:
            zfile.extractall(r'/home/gis/adresypolska')  




Error:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
  File "/usr/lib/python3.8/http/client.py", line 471, in read
    s = self._safe_read(self.length)
  File "/usr/lib/python3.8/http/client.py", line 612, in _safe_read
    data = self.fp.read(amt)
  File "/usr/lib/python3.8/socket.py", line 669, in readinto
    return self._sock.recv_into(b)
  File "/usr/lib/python3.8/ssl.py", line 1241, in recv_into
    return self.read(nbytes, buffer)
  File "/usr/lib/python3.8/ssl.py", line 1099, in read
    return self._sslobj.read(len, buffer)
OverflowError: signed integer is greater than maximum
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-11 21:36:06

只是根本不要使用ZipFile。你有了文件内容,写出来:

代码语言:javascript
复制
zipurl = 'https://opendata.geoportal.gov.pl/prg/adresy/PunktyAdresowe/POLSKA.zip'
with open('POLSKA.zip', 'wb') as f:
    f.write(urlopen(zipurl).read())

要以块的形式读取和保存,如果RAM较小,请执行以下操作:

代码语言:javascript
复制
with open('POLSKA.zip', 'wb') as f:
    with urlopen(zipurl) as zipresp:
        while True:
            chunk = zipresp.read(1024)
            if not chunk: break
            f.write(chunk)

这将在每次迭代中读取1024个字节,您应该根据需要进行相应的更改。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65667843

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档