我是龙卷风的新手,我需要提供一个zip文件(由python制作)。

所以我将此代码行添加到我的脚本中,找到了here

        zipname="clients_counter.zip"
        zf = zipfile.ZipFile(zipname, "w")
        for dirname, subdirs, files in os.walk("tozip"):
            zf.write(dirname)
            for filename in files:
                zf.write(os.path.join(dirname, filename))
        zf.close()
        self.set_header('Content-Type', 'application/zip')
        self.write(zipname.getvalue())
        self.finish()


结果这只是给我一个白页,它没有开始下载。有没有更好的建议来实现我的目标?

最佳答案

如果您想将zipfile快速发送到浏览器(不保存到本地文件系统),请尝试以下操作:

from io import BytesIO
zipname="clients_counter.zip"
f=BytesIO()
zf = zipfile.ZipFile(f, "w")
    for dirname, subdirs, files in os.walk("tozip"):
        zf.write(dirname)
        for filename in files:
            zf.write(os.path.join(dirname, filename))
zf.close()
self.set_header('Content-Type', 'application/zip')
self.set_header("Content-Disposition", "attachment; filename=%s" % zipname)
self.write(f.getvalue())
f.close()
self.finish()


zips文件存放在BytesIO对象中,而zipname只是发送给客户端浏览器的名称。

08-24 22:09