使用 Python 从 URL 下载 Zip 文件

Download Zip File from URL using Python

我正在尝试使用请求模块从我的网络服务器下载 ZIP 文件。

我尝试了多种不同的方法,但总是出错。

我最近的代码很有前途 - 下载的文件大小(接近)我的预期(不知何故有点大?),但是当我尝试使用 Python 解压缩文件时,我得到了这个错误:

    fp.seek(self.start_dir, 0)
    OSError: [Errno 22] Invalid argument

并尝试使用 Windows 10 打开它,我收到“无效的 ZIP 文件”错误。

这是我当前的代码:

LATEST_PACKAGE = requests.get(NET_URL + "/package.zip")
lp_local = open("%s:/Users/%s/Desktop/package.zip"%(DRIVELETTER, os.getlogin()), "xb")
lp_local.write(bytes(LATEST_PACKAGE.text, "UTF-8"))
lp_local.close()

with ZipFile("%s:/Users/%s/Desktop/package.zip"%(DRIVELETTER, os.getlogin())) as data:
   data.extractall(INSTALL_PATH)
   data.close()

其中 DRIVELETTER 是 Windows 10 驱动器(在我的例子中,C:/)。

任何人都可以提供有关此错误的任何见解以及任何可能的解决方案吗?

如果您愿意 try/use 除了“请求”之外的其他内容并且您不需要存储存档(只需下载并解压缩它;如果您需要存储它, 让我知道), 你可以试试下面的代码:

from io import BytesIO
from urllib.request import urlopen
from zipfile import ZipFile

zipurl = 'https://drive.google.com/uc?export=download&id=1yAmFc15GtP52El_RTxl6uqmZZJi-h4BG'

with urlopen(zipurl) as zipresp:
    with ZipFile(BytesIO(zipresp.read())) as zfile:
        zfile.extractall('*YOUR PATH HERE*')

结果:

注意:如果您需要存储存档,请告诉我。