2016-07-28 69 views
5

我的Flask應用程序中有一個Pandas數據框,我想將其作爲CSV文件返回。使用Flask將Pandas數據框轉換爲CSV並提供下載

return Response(df.to_csv()) 

問題是輸出顯示在瀏覽器中,而不是作爲單獨的文件下載。我該如何改變它?

我嘗試了以下,但它只是給了空輸出。

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

回答

8

設置Content-Disposition告訴瀏覽器下載文件,而不是在頁面上顯示其內容。

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

我可以選擇一個文件名? – Nickpick

0

集內容處置,並使用StringIO的轉換數據幀到流,下面是代碼實現,

execel_file = StringIO.StringIO() 
filename = "%s.csv" % ('output file') 
df.to_csv(execel_file, encoding='utf-8') 
csv_output = execel_file.getvalue() 
execel_file.close() 

resp = make_response(csv_output) 
resp.headers["Content-Disposition"] = ("attachment; filename=%s" % filename) 
resp.headers["Content-Type"] = "text/csv" 
return resp 
相關問題