Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在应用程序引擎(Python)中压缩动态文件_Python_Google App Engine_Zipfile - Fatal编程技术网

在应用程序引擎(Python)中压缩动态文件

在应用程序引擎(Python)中压缩动态文件,python,google-app-engine,zipfile,Python,Google App Engine,Zipfile,我是否可以使用zipfile将动态生成的内容(例如新呈现的html模板)压缩到zip文件中 似乎有一些压缩静态内容的例子,但没有一个是压缩动态内容的。还是根本不可能 还有一个问题:是否可以创建一个包含一堆子文件夹的zip文件 谢谢。您可以使用以下方法将任何内容添加到zip文件中: 除了Schnouki的优秀答案外,您还可以向ZipFile传递类似文件的对象,例如由创建的对象。工作代码:(对于应用程序引擎:) output=StringIO.StringIO() z=zipfile.zipfile

我是否可以使用zipfile将动态生成的内容(例如新呈现的html模板)压缩到zip文件中

似乎有一些压缩静态内容的例子,但没有一个是压缩动态内容的。还是根本不可能

还有一个问题:是否可以创建一个包含一堆子文件夹的zip文件


谢谢。

您可以使用以下方法将任何内容添加到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())