管理csv上载文件

2024-04-26 04:04:27 发布

您现在位置:Python中文网/ 问答频道 /正文

def createlist(request):
    if request.method == 'POST':
        files =  request.FILES['ListFile']
        print(type(files))
        csv_file = csv.DictReader(files)
        for i in csv_file:
            print(i)
    return HttpResponse("ok")

这给了
类'django.core.files.上载的文件.InMemoryUploadedFile'
_csv.错误:iterator应该返回字符串,而不是字节(是否以文本模式打开文件?)
这里我用ajax发布这个文件
js:

^{pr2}$

Tags: 文件csvifrequestdeftypefilespost
2条回答

CSV不支持UTF8。它需要对类似文件的对象进行编码。有关详细信息,请参阅here。在

import codecs

def createlist(request):
    if request.method == "POST":
        utf8_file = codecs.EncodedFile(request.FILES["ListFile"],"utf-8")
        csv_file = csv.DictReader(utf8_file)
        for i in csv_file:
            print(i)
    return HttpResponse("ok")

使用编解码器.iterdecode,我解决了。我想这是由于Python3.x

import codecs

def createlist(request):
    if request.method == "POST":    
        fil =  request.FILES['ListFile']
        csvfile = csv.DictReader(codecs.iterdecode(fil, 'utf-8'))
        for i in csv_file:
            print(i)
    return HttpResponse("ok") 

相关问题 更多 >