【问题标题】:Python Flask: How to return a csv one line at a time [duplicate]Python Flask:如何一次返回一行[重复]
【发布时间】:2016-06-08 09:28:30
【问题描述】:

我有一个巨大的 csv 文件被另一个 asp 脚本调用,因为文件太大,asp 脚本在文件完成生成之前等待响应超时,因此 csv 没有下载。烧瓶中是否有一种方法可以在生成 csv 时返回空白响应或一次返回 csv 文件一行?

【问题讨论】:

标签: python csv flask


【解决方案1】:

您可以像这样使用 Flask 流式传输数据:

这是一个基本的视图函数,可以动态生成大量 CSV 数据。诀窍是拥有一个内部函数,该函数使用生成器生成数据,然后调用该函数并将其传递给响应对象:

from flask import Response

@app.route('/large.csv')
def generate_large_csv():
    def generate():
        for row in iter_all_rows():
            yield ','.join(row) + '\n'
    return Response(generate(), mimetype='text/csv')

每个 yield 表达式都直接发送到浏览器。请注意,尽管某些 WSGI 中间件可能会中断流式传输,因此在带有分析器和其他您可能已启用的东西的调试环境中要小心。

更多信息请点击here

【讨论】:

  • 不应该return Response((row for row in iter_all_rows()), mimetype='text/csv') 工作吗?
  • (i for i in x) 一个生成器。
  • 是的。你是对的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-12
  • 1970-01-01
  • 2019-05-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多