【问题标题】:How to read CSV file from POST?如何从 POST 读取 CSV 文件?
【发布时间】:2014-09-11 16:40:50
【问题描述】:

我在这个 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() 仅适用于上传文件的直接路径。但是,我需要凭记忆做到这一点。

【问题讨论】:

    标签: csv python-3.4 filefield django-1.7


    【解决方案1】:

    在 python 3 中, 我用过:

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

    xls_file 是从 POST 表单获取的文件。 希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 2013-06-13
      • 2019-05-27
      • 1970-01-01
      • 2021-07-05
      • 1970-01-01
      • 1970-01-01
      • 2015-11-26
      • 2023-04-03
      相关资源
      最近更新 更多