python - 包含带有多个 csv 文件的 zip 文件的 Django 响应
问题描述
我有一个算法可以输出一个元组列表,可以将其写入 csv 文件。
我正在尝试编写 3 个 csv 文件(通过 StringIO 所以不写入磁盘),然后将它们完全压缩。之后,我想将其附加到 django 请求的响应中。
我不确定最有效的方法是什么。我应该StringIO
通过我的算法来存储 3 个调用吗?我应该在压缩它们之前先创建 csv 文件吗?我可以直接使用 1zipfile
调用而不需要调用 3 StringIO
s 的中间步骤吗?
谢谢
解决方案
您可以执行以下操作:
# Create the zip file
output = StringIO.StringIO()
f = zipfile.ZipFile(output, 'w', zipfile.ZIP_DEFLATED)
f.writestr('first.csv', '<the content of first.csv>')
f.writestr('second.csv', '<the content of second.csv>')
f.writestr('third.csv', '<the content of third.csv>')
f.close()
# Build your response
response = HttpResponse(output.getvalue(), mimetype='application/zip')
response['Content-Disposition'] = 'attachment; filename="yourzipfilename.zip"'
return response
如果文件很大,您可能需要使用StreamingHttpResponse
(或FileResponse ) https://stackoverflow.com/a/48949959/1904584
推荐阅读
- php - 选择查询的分页 - PHP
- jquery - 如何将选择的所有选项设置为“所有”选项选项的值?
- presto - 有没有办法将一列除以列总数?
- machine-learning - Keras:编译模型后更新“可训练”属性
- python - 在使用 Python 的 SQL 查询中使用一系列变量
- json - 从 HackerNewsApi 后端接收的 HTML 标签和特殊字符,在视图中未解码
- javascript - 无法分配给“MyComponent”,因为它不是变量(ReactJS 中的react-dnd 多拖放支持
- excel - vba 有没有办法在其中均匀分配值?
- d3.js - 数据可视化仅适用于条形图中的第一个条形
- apache - RedirectMatch 301 删除 URL 参数