我的Flask应用中有一个Pandas数据帧,我希望将其作为CSV文件返回。
return Response(df.to_csv())
问题是输出显示在浏览器中而不是作为单独的文件下载。我怎么能改变它?
我也尝试了以下内容,但它只是空输出。
response = make_response(df.to_csv())
response.headers['Content-Type'] = 'text/csv'
return Response(response)
答案 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