【问题标题】:How to pass CSV file object to falcon response如何将 CSV 文件对象传递给猎鹰响应
【发布时间】:2019-03-01 10:49:14
【问题描述】:
csv_file = "test.csv"
with open(csv_file, 'w') as csvfile:
    writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
    writer.writeheader()
    writer.writerows(response_data)
    csvfile.close()

这里我们已经在本地生成了 CSV 文件。现在我们正在尝试使用 falcon 创建和下载文件。如何将 CSV 文件对象传递给 falcon 响应?

【问题讨论】:

    标签: python-3.x falconframework


    【解决方案1】:

    您可以按如下方式提供 CSV 文件:

    另外,如果您使用的是 Falcon >= 1.4:

    import falcon
    import mimetypes
    
    
    class StaticResource(object):
        def on_get(self, req, resp):
            csv_file_path = "test.csv"
            resp.content_type = mimetypes.guess_type(csv_file_path)[0]
            resp.stream, resp.stream_len = open(csv_file_path)
    
    
    app = falcon.API()
    app.add_route('/static', StaticResource())
    

    如果您已经创建了文件,则创建文件对象:

    import falcon
    
    
    class StaticResource(object):
        def on_get(self, req, resp):
            csv_file_path = "test.csv"
            resp.status = falcon.HTTP_200
            resp.content_type = 'text/csv'
            with open(csv_file_path, 'r') as f:
                resp.body = f.read()
    
    
    app = falcon.API()
    app.add_route('/static', StaticResource())
    

    如果你已经有文件对象:

    import falcon
    
    
    class StaticResource(object):
        def on_get(self, req, resp):
            csv_file_path = "test.csv"
            with open(csv_file_path, 'w') as csvfile:
                writer = csv.DictWriter(csvfile, fieldnames=csv_columns)
                writer.writeheader()
                writer.writerows(response_data)
                csvfile.close()
            resp.status = falcon.HTTP_200
            resp.content_type = 'text/csv'
            resp.body = writer 
    
    
    app = falcon.API()
    app.add_route('/static', StaticResource())
    

    希望我能正确回答您的问题。另外,您可以参考此文档https://falcon.readthedocs.io/en/stable/api/api.html#falcon.API.add_static_route 服务目录。

    【讨论】:

      猜你喜欢
      • 2016-04-09
      • 2018-06-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-04-27
      • 2014-07-23
      • 1970-01-01
      • 2017-09-02
      相关资源
      最近更新 更多