2017-03-21 83 views
1

我需要打開保存在FileField中的文件,創建一個包含文件內容的列表並將其傳遞給模板。我怎樣才能打開文件?我試過with open(stocklist.csv_file.url, "wb"),但它給了我一個「文件未找到」的錯誤。如果我這樣做:Django如何在FileField中打開文件

csv_file = stocklist.csv_file.open(mode="rb") 

csv_fileNone。但是,有一個文件。如果我打印print("stocklist.csv_file.url: %s" % stocklist.csv_file.url)我得到

stocklist.csv_file:https://d391vo1.cloudfront.net/csv_pricechart/...ss7.csv

如果我去管理,我可以下載該文件。那麼,我該如何打開保存在FileField中的文件呢?

+0

什麼是你的後端存儲? –

+0

它是一個AWS存儲桶 – alejoss

回答

2

.open()打開文件遊標但不返回它,因爲它取決於您的存儲(文件系統,S3,FTP ...)。一旦打開,you can use .read() to iterate over the file content

stocklist.csv_file.open(mode="rb") 
content = stocklist.csv_file.read() 
stocklist.csv_file.close() 

如果你想專門與文件描述符工作,那麼你可以使用你的存儲功能:

from django.core.files.storage import DefaultStorage 
storage = DefaultStorage() 
f = storage.open(stocklist.csv_file.name, mode='rb') 
相關問題