我需要打开保存在FileField中的文件,创建一个包含文件内容的列表并将其传递给模板。我该如何打开文件?我试过with open(stocklist.csv_file.url, "wb")
,但它给了我一个“找不到文件”的错误。如果我这样做:
csv_file = stocklist.csv_file.open(mode="rb")
csv_file
是None
。但是,有一个文件。如果我打印print("stocklist.csv_file.url: %s" % stocklist.csv_file.url)
我会得到
stocklist.csv_file:https://d391vo1.cloudfront.net/csv_pricechart/...ss7.csv
如果我去管理员,我可以下载该文件。那么,如何打开保存在FileField
?
答案 0 :(得分:4)
.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')