从Flask返回Numpy数组作为CSV

时间:2014-06-27 08:20:35

标签: python numpy flask export-to-csv

我在Flask中有一部分API当前在Json中返回一个Numpy数组,我需要提供以CSV而不是Json的形式返回的选项。

我成功完成此操作的唯一方法是使用numpy.savetxt将Numpy数组保存为CSV然后提供该文件。我发现我不能像How can I generate file on the fly and delete it after download?这样留下文件,但仍感觉'kludgy'

有没有办法将Numpy数组作为CSV返回而不通过文件?

2 个答案:

答案 0 :(得分:2)

是的,你可以,

@app.route('/download')
def download():
    csv = convert_numpy_array_to_csv(your_numpy_array)
    response = make_response(csv)
    response.headers["Content-Disposition"] = "attachment; filename=array.csv"
    return response

您不必将csv保存到文件中。如果您无法避免创建文件,可以在临时文件夹中创建文件(可以通过import tempfile;tempfile.gettempdir()获取)。这样做会在每次重启系统时自动删除文件

答案 1 :(得分:1)

好吧,如果你想使用numpy.savetxt函数,那么你可以使用cStringIO:

from cStringIO import StringIO
output = StringIO()
numpy.savetxt(output, numpy_array)
csv_string = output.getvalue()

对于python 3,您可以从io模块导入StringIO或BytesIO。