如何将CSV文件对象传递给猎鹰响应

时间:2019-03-01 10:49:15

标签: python-3.x falconframework

Image.Source

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

1 个答案:

答案 0 :(得分:0)

您可以按以下方式提供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来提供目录。