Aufgabe: gelesene Datei, um Struktur zu überprüfen. Meine Test-Upload-Datei hat 5 Zeilen mit Header und etwa 20-30 Spalten. Codierung ist ISO-8859-1Gelesene Datei mit csv.reader
Klingt einfach, aber es treibt mich langsam in den Wahnsinn. Die einzigen zur Zeit Arbeitslösung ist Umweg über Model:
file = request.FILES.getlist('job_file', None)[0]
newdoc = models.Jobs(job_file=file)
newdoc.save()
with codecs.open(newdoc.job_file.name, "r", encoding='iso-8859-1') as fp:
file_content = list(csv.reader(fp, delimiter=';', quotechar='"'))
Schmutzig, verrückt und weit von akzeptablen
Nichtarbeitslösungen:
1:
file_content = list(csv.reader(file, delimiter=';', quotechar='"'))
print(file_content)
>>>_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
2:
3:
file_content = list(csv.reader(file.read(), delimiter=';', quotechar='"'))
print(file_content)
>>>_csv.Error: iterator should return strings, not int (did you open the file in text mode?)
Einige Hinweise:
print(file.read())
>>>b';"";""\r\n' <-- WRONG see file content at the top
print(file.readlines())
>>>[]
Bitte rette mich!
gibt einen Schuss zu: 'data = csv.reader (request.FILES.getlist ('job_file', None) [0], delimiter = ';', QuoteChar = '"') 'und wenn es nicht funktioniert, versuche es mit:' csv.reader (codecs.EncodedFile (request.FILES.getlist ('job_file', None) [0], "iso-8859-1"), delimiter = ';', quotechar = '"')' – Todor
'_csv.Error: Iterator sollte Zeichenfolgen, keine Bytes zurückgeben (haben Sie die Datei im Textmodus geöffnet?)' für beide :( –