Sample.csv enthält Folgendes:
NAME Id No Dept
Tom 1 12 CS
Hendry 2 35 EC
Bahamas 3 21 IT
Frank 4 61 EE
Die Python-Datei enthält den folgenden Code:
import csv
ifile = open('sample.csv', "rb")
read = csv.reader(ifile)
for row in read :
print (row)
Wenn ich den obigen Code in Python ausführe, erhalte ich die folgende Ausnahme:
Datei "csvformat.py", Zeile 4, in Zeile für read: _csv.Error: Der Iterator sollte Zeichenfolgen und keine Bytes zurückgeben (haben Sie die Datei im Textmodus geöffnet?)
Wie kann ich es reparieren?
python
python-3.x
csv
Pika der Zauberer der Wale
quelle
quelle
Ich habe dieses Problem gerade mit meinem Code behoben. Der Grund, warum diese Ausnahme ausgelöst wird, ist, dass Sie das Argument haben
rb
. Ändern Sie das inr
.Dein Code:
Neuer Code:
quelle
Ihr Problem ist, dass Sie die
b
in deropen
Flagge haben. Das Flagrt
(Lesen, Text) ist die Standardeinstellung. Verwenden Sie dazu einfach den Kontextmanager:Der Kontextmanager bedeutet, dass Sie keine generische Fehlerbehandlung benötigen (ohne die Sie möglicherweise bei geöffneter Datei hängen bleiben, insbesondere in einem Interpreter), da die Datei bei einem Fehler oder beim Beenden des Kontexts automatisch geschlossen wird.
Das Obige ist dasselbe wie:
oder
quelle
with
Aussage alias der Kontextmanager hat überhaupt nichts mit dieser Frage zu tun!Erwartet in Python3,
csv.reader
dass die übergebene iterable Zeichenfolge Zeichenfolgen und keine Bytes zurückgibt. Hier ist eine weitere Lösung für dieses Problem, diecodecs
Modul verwendet:quelle
Ich hatte diesen Fehler beim Ausführen eines alten Python-Skripts, das mit Python 2.6.4 entwickelt wurde
Beim Update auf 3.6.2 musste ich alle 'rb'-Parameter aus offenen Aufrufen entfernen , um diesen CSV-Lesefehler zu beheben.
quelle