Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
File “D:\andreas\Programmierung\Python\bestenliste_laufen\running_results\distances\admin.py”, line 30, in import_csv
for row in reader:
_csv.Error: iterator should return strings, not bytes (did you open the file in text mode?)
Da kommen halt Bytes über die Verbindung. Das sieht nach einem Fall für `io.TextIOWrapper` aus. Wichtig: Das `newline`-Argument nicht vergessen.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
if request.method == "POST":
with io.TextIOWrapper(request.FILES["csv_file"], newline='\n') as text_file:
reader = csv.reader(text_file, delimiter=';')
# todo get highest sort number
sort = 1
for row in reader:
bekomme ich aber leider noch den Fehler
File "D:\andreas\Programmierung\Python\bestenliste_laufen\running_results\distances\admin.py", line 37, in import_csv
for row in reader:
ValueError: I/O operation on closed file.
@pythoner: Die Datei *ist* offen. Dein Problem ist wohl eher das Du sie nicht schliessen solltest, beziehungsweise darauf zugreifen solltest solange sie noch offen ist. Kann man jetzt aber nur raten, weil man in dem Beitrag die Einrückung nicht erkennen kann.
Das `newline`-Argument sollte die leere Zeichenkette gebunden werden. Siehe Dokumentation vom `csv`-Modul. Und die Kodierung würde man besser auch noch angeben.
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
with io.TextIOWrapper(request.FILES["csv_file"], encoding="utf-8", newline='\n') as text_file:
reader = csv.reader(text_file, delimiter=';')
for row in reader: