栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

从Flask视图创建和下载CSV文件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

从Flask视图创建和下载CSV文件

使用生成数据

csv.writer
并传输响应。使用StringIO写入内存缓冲区,而不是生成中间文件。

import csvfrom datetime import datetimefrom io import StringIOfrom flask import Flaskfrom werkzeug.wrappers import Responseapp = Flask(__name__)# example data, this could come from wherever you are storing logslog = [    ('login', datetime(2015, 1, 10, 5, 30)),    ('deposit', datetime(2015, 1, 10, 5, 35)),    ('order', datetime(2015, 1, 10, 5, 50)),    ('withdraw', datetime(2015, 1, 10, 6, 10)),    ('logout', datetime(2015, 1, 10, 6, 15))]@app.route('/')def download_log():    def generate():        data = StringIO()        w = csv.writer(data)        # write header        w.writerow(('action', 'timestamp'))        yield data.getvalue()        data.seek(0)        data.truncate(0)        # write each log item        for item in log: w.writerow((     item[0],     item[1].isoformat()  # format datetime as string )) yield data.getvalue() data.seek(0) data.truncate(0)    # stream the response as the data is generated    response = Response(generate(), mimetype='text/csv')    # add a filename    response.headers.set("Content-Disposition", "attachment", filename="log.csv")    return response

如果该

generate
函数需要从current中获取信息
request
,则应使用修饰
stream_with_context
,否则您将收到“在外部请求上下文中工作”错误。其他一切保持不变。

from flask import stream_with context@stream_with_contextdef generate():    ...


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/660765.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号