django 在csv.reader中处理UploadedFile

6yoyoihd  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(116)

我正在尝试读取上载的文件而不保存它:

def import_file(request):
    if request.method != 'POST':
        form = UploadForm()
    else:
        form = UploadForm(request.POST, request.FILES)
        if form.is_valid():
            rdr = csv.reader(request.FILES["file"], delimiter=',')
            for row in rdr:
                print(row)
                ...

字符串
但是我得到的是iterator should return strings, not bytes (the file should be opened in text mode)如果我用open函数阅读文件,我可以用'rt'打开它。但在本例中,如果我没有弄错的话,我处理的是TemporaryUploadedFile类。所以我不能再打开了。这里的正确方法是什么?基于简单的主题,我尝试在TemporaryUploadedFile上使用read()decode("UTF-8")decode("ISO-8859-1"),但到目前为止没有任何效果。

rbl8hiat

rbl8hiat1#

您需要在将内容传递到reader(...)之前解码

def import_file(request):
    stream = request.FILES["file"].read().decode("utf-8").splitlines()
    rdr = csv.reader(stream, delimiter=',')
    for row in rdr:
        print(row)
        ...

字符串

相关问题