Django:使用FileField实例读取上传的CSV文件

sch*_*tte 3 python csv django

我正在尝试读取类型为的用户上传的.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()。

编辑

我知道这可能与具有该线程建议的阅读模式有关,但是在这种情况下如何更改模式?

Alx*_*ejo 8

这是我的解决方法(因为在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)