在应用程序引擎(Python)中压缩动态文件
我是否可以使用zipfile将动态生成的内容(例如新呈现的html模板)压缩到zip文件中 似乎有一些压缩静态内容的例子,但没有一个是压缩动态内容的。还是根本不可能 还有一个问题:是否可以创建一个包含一堆子文件夹的zip文件在应用程序引擎(Python)中压缩动态文件,python,google-app-engine,zipfile,Python,Google App Engine,Zipfile,我是否可以使用zipfile将动态生成的内容(例如新呈现的html模板)压缩到zip文件中 似乎有一些压缩静态内容的例子,但没有一个是压缩动态内容的。还是根本不可能 还有一个问题:是否可以创建一个包含一堆子文件夹的zip文件 谢谢。您可以使用以下方法将任何内容添加到zip文件中: 除了Schnouki的优秀答案外,您还可以向ZipFile传递类似文件的对象,例如由创建的对象。工作代码:(对于应用程序引擎:) output=StringIO.StringIO() z=zipfile.zipfile
谢谢。您可以使用以下方法将任何内容添加到zip文件中:
除了Schnouki的优秀答案外,您还可以向ZipFile传递类似文件的对象,例如由创建的对象。工作代码:(对于应用程序引擎:)
output=StringIO.StringIO()
z=zipfile.zipfile(输出,'w')
my_data=“你好,世界!”
z、 writestr(“hello.html”,我的数据)
z、 关闭()
self.response.headers[“内容类型”]=“多部分/x-zip”
self.response.headers['Content-Disposition']=“附件;文件名=test.zip”
self.response.out.write(output.getvalue())
再次感谢Schnouki和Ryan。谢谢Ryan_如果您使用的是Python3,那么它必须是io.BytesIO(StringIO模块不存在了,zipfile需要一个字节缓冲区)Oops,刚刚意识到这是关于AppEngine的。你可能应该忽略我最后的评论:),对不起。
my_data = "<html><body><p>Hello, world!</p></body></html>"
z.writestr("hello.html", my_data)
z.writestr("site/foo/hello/index.html", my_data)
output = StringIO.StringIO()
z = zipfile.ZipFile(output,'w')
my_data = "<html><body><p>Hello, world!</p></body></html>"
z.writestr("hello.html", my_data)
z.close()
self.response.headers["Content-Type"] = "multipart/x-zip"
self.response.headers['Content-Disposition'] = "attachment; filename=test.zip"
self.response.out.write(output.getvalue())