Python 0字节压缩文件

Python 0字节压缩文件,python,flask,zip,Python,Flask,Zip,我有一个包含Word文档和PDF文档的URL列表。 我想得到所有这些,并创建一个包含所有文档的zip文件,然后可以下载(创建一个带有application/zip mime类型的Flask响应)。 我有以下代码,它只返回一个0字节的zip文件: allLinks = [...] for link in allLinks: with zipfile.ZipFile('Documents.zip', mode='w', compression=zipfile.ZIP_DEFLATED) as zip

我有一个包含Word文档和PDF文档的URL列表。 我想得到所有这些,并创建一个包含所有文档的zip文件,然后可以下载(创建一个带有application/zip mime类型的Flask响应)。 我有以下代码,它只返回一个0字节的zip文件:

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文件不包含任何内容。我想返回声明会很快转发到。我曾经尝试过使用线程,但我不太确定这是否是解决方案,以及如何继续

您正在用
mode='w'
覆盖每次迭代的开头,因此,如果最后一个url没有返回200,您将得到一个空的zip文件,最好只得到最后一个
zip.writestr

在循环外打开:

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

非常感谢。但我仍然有一个0字节的存档。看起来并不是所有的链接都被加载了,文档也被压缩了。如果我幸运的话,它只能从所有链接中压缩出一个文档。