zoukankan      html  css  js  c++  java
  • flask动态生成csv

    前言

    最近在开发flask的一款小工具时,遇到了动态生成csv的问题。于是乎,翻阅了一些资料在这里做一下总结记录。

    起因

    最近想把某一组数据(比如下面这种)生成csv的形式,最初使用的方法时把数据先生成csv然后把文件下载下来,但是这种方法太过繁琐,于是决定试试动态生成csv。

    user_data = [
        ['姓名', '性别', '年龄'],
        ['张三', '男', '18'],
        ['李四', '男', '19'],
        ['王五', '男', '20'],
        ['小花', '女', '18'],
        ['小丽', '女', '19'],
        ['小翠', '女', '20'],
    ]
    

    经历了一番Google之后,找到了如下的方法。在这里记录分享一下。

    生成文件

    import os
    import csv
    from io import StringIO
    from flask import Flask, Response, stream_with_context
    
    
    app = Flask(__name__)
    
    user_data = [
        ['姓名', '性别', '年龄'],
        ['张三', '男', '18'],
        ['李四', '男', '19'],
        ['王五', '男', '20'],
        ['小花', '女', '18'],
        ['小丽', '女', '19'],
        ['小翠', '女', '20'],
    ]
    
    
    @app.route('/csv', methods=['GET'])
    def download():
        def generate():
            data = StringIO()
            w = csv.writer(data)
            # writer
            for i in user_data:
                w.writerow(i)
                yield data.getvalue()
                data.seek(0)
                data.truncate(0)
    
        response = Response(stream_with_context(generate()), mimetype='text/csv')
        response.headers.set("Content-Disposition",
                             "attachment", filename="user.csv")
        return response
    
    
    if __name__ == "__main__":
        app.run(debug=True)
    
    

    结果

    可以看到成功生成了csv, 代码也看起来神清气爽,也不冗余了,头也不疼不眩晕了,距离变秃又远了一分。

  • 相关阅读:
    cache in c#
    c#解析xml
    自动执行任务管理---TaskManage
    IConfigurationSectionHandler 使用~
    Autofac
    黑苹果教程(四)———MAC OS 10.11+固态硬盘+自定义引导
    android安装Linux,玩转Android
    精通android(Pro Android 4)面试题总结(二)
    精通android(Pro Android 4)面试题总结(一)
    Mac上的词典扩充
  • 原文地址:https://www.cnblogs.com/wxhou/p/13959991.html
Copyright © 2011-2022 走看看