簡體   English   中英

Django:使用FileField實例讀取上傳的CSV文件

[英]Django: Read uploaded CSV file using FileField instance

我正在嘗試讀取用戶在FileField類型的字段中上傳的.csv文件的數據。 我訪問該對象沒有問題,但是我似乎無法使其與csv模塊一起使用。 這是我正在嘗試的:

reader = csv.reader(object.uploaded_file.read())
for rows in reader:
...

其中object是我的模型的實例, uploaded_file是相應的字段。

我收到此錯誤:

迭代器應返回字符串,而不是int(您是否以文本模式打開文件?)

也,

我嘗試使用open()方法,但沒有成功。 關於此主題的文檔似乎太含糊。 更糟糕的是,我在上面使用的read()方法上唯一能找到的是:

除了列出的方法外,File還公開了其文件對象的以下屬性和方法:編碼,fileno,flush,isatty,換行符,讀取,readinto,readline,readlines,seek,softspace,告訴,截斷,寫入,writelines,xreadlines ,read(),writable()和seekable()。

編輯

我知道這可能與具有該線程建議的閱讀模式有關,但是在這種情況下如何更改模式?

這是我的解決方法(因為在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)

我終於找到了解決方法:

 reader = csv.reader(open(object.uploaded_file.path,'r'))

我沒有使用我在問題中提到的文檔數量很少的內置File對象的read()open() ,而是使用path屬性。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM