使用Flask将Pandas数据帧转换为CSV并提供下载

时间:2016-07-28 11:19:45

标签: python pandas flask

我的Flask应用中有一个Pandas数据帧,我希望将其作为CSV文件返回。

return Response(df.to_csv())

问题是输出显示在浏览器中而不是作为单独的文件下载。我怎么能改变它?

我也尝试了以下内容,但它只是空输出。

response = make_response(df.to_csv())
response.headers['Content-Type'] = 'text/csv'
return Response(response)

3 个答案:

答案 0 :(得分:19)

设置Content-Disposition以告知浏览器下载文件,而不是在页面上显示其内容。

resp = make_response(df.to_csv())
resp.headers["Content-Disposition"] = "attachment; filename=export.csv"
resp.headers["Content-Type"] = "text/csv"
return resp

答案 1 :(得分:3)

这几乎是相同的解决方案,但是您可以将相同的信息传递给Response:

return Response(
       df.to_csv(),
       mimetype="text/csv",
       headers={"Content-disposition":
       "attachment; filename=filename.csv"})

答案 2 :(得分:0)

设置content-disposition并使用stringIO将dataframe转换为stream,下面是要实现的代码,

devDependencies