0 字节 Zip 存档

0 byte Zip-Archive

我有一个包含 Word 文档和 PDF 文档的 URL 列表。 我想获取所有这些并创建一个包含所有文档的 zip 文件,然后可以下载该文件(Creating a Flask Response with application/zip mime-type)。 我有以下代码,它只有 return 一个 0 字节的压缩文件:

allLinks = [...]
for link in allLinks:
with zipfile.ZipFile('Documents.zip', mode='w', compression=zipfile.ZIP_DEFLATED) as zip:
   response = requests.get(link, headers=headers, stream=True)
   filename = urllib.parse.unquote(response.headers.get('content-  disposition').replace("attachment; filename*=UTF-8",                                                                                     "").replace("''", "").encode('latin-1').decode('utf-8'))
if response.status_code == 200:
   zip.writestr(filename, response.content)    
return zip

zip 文件不包含任何内容。我认为 return 语句很快被转发到。我虽然使用线程,但我不太确定这是否是解决方案以及如何进行。

你正在用 mode='w' 覆盖每个迭代 pening 所以如果最后一个 url 没有 return 200 你得到一个空的 zip 文件,最好你只得到最后一个 zip.writestr.

在循环外打开:

allLinks = [...]
with zipfile.ZipFile('Documents.zip', mode='w', compression=zipfile.ZIP_DEFLATED) as zp:
    for link in allLinks: