我正在尝试读取类型为的用户上传的.csv文件的数据FileField。我访问该对象没有问题,但似乎无法使其与csv模块一起使用。这是我正在尝试的:
reader = csv.reader(object.uploaded_file.read())
for rows in reader:
...
Run Code Online (Sandbox Code Playgroud)
object我的模型的实例和uploaded_file相应字段在哪里。
我收到此错误:
迭代器应返回字符串,而不是int(您是否以文本模式打开文件?)
也,
我尝试使用该open()方法,但没有成功。关于此主题的文档似乎太含糊。更糟糕的是,我在read()上面使用的方法上唯一能发现的是:
除了列出的方法之外,File还公开了其文件对象的以下属性和方法:编码,fileno,flush,isatty,换行符,读取,readinto,readline,readlines,seek,softspace,告诉,截断,写入,writelines,xreadlines ,read(),writable()和seekable()。
编辑
我知道这可能与具有该线程建议的阅读模式有关,但是在这种情况下如何更改模式?
这是我的解决方法(因为在FileField上传的情况下,您不需要“打开”已经打开的文件)。
import csv
from io import StringIO
def parse_file(self, csv_upload):
file = csv_upload.read().decode('utf-8')
csv_data = csv.reader(StringIO(file), delimiter=',')
for row in csv_data:
print(row)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1744 次 |
| 最近记录: |