如何从POST读取CSV文件?

时间:2014-09-11 16:40:51

标签: csv python-3.4 filefield django-1.7

我已经在这个csv问题上被困了几个小时。发布表单后运行以下代码:

fichier_en_lecture = request.FILES['fichier_csv'].read()
nom_du_fichier = request.FILES['fichier_csv'].name
importateur = request.user
traitement_du_fichier(fichier_en_lecture, importateur)

" traitement_du_fichier"功能如下:

def traitement_du_fichier(fichier_en_lecture, nom_du_fichier, importateur):
    nouveau_fichier = FichierAdhérents(importateur=importateur, fichier_csv=nom_du_fichier)
    nouveau_fichier.save()
    import csv
    lecteur = csv.reader(fichier_en_lecture, delimiter=",", quotechar='|')
    for row in lecteur:
        nouvel_adhérent = AdhérentDuFichier()
        nouvel_adhérent['fichier_adhérents'] = nouveau_fichier
        column_counter = 0
        nouvel_adhérent['fédération'] = row[column_counter]
        column_counter += 1
        nouvel_adhérent['date_première_adhésion'] = row[column_counter]
        column_counter += 1
        nouvel_adhérent['date_dernière_cotisation'] = row[column_counter]

我收到以下错误:

iterator should return strings, not int (did you open the file in text mode?)

我尝试过使用open(),但据我所知,open()仅适用于上传文件的直接路径。但是,我需要从记忆中做到这一点。

1 个答案:

答案 0 :(得分:3)

在python 3中, 我用过:

import csv
from io import StringIO
csvf = StringIO(xls_file.read().decode())
reader = csv.reader(csvf, delimiter=',')

xls_file是从POST表单获取的文件。 我希望它有所帮助。