Ich arbeite an einem Skript, das die csv.reader() ein paar Mal im Skript verwenden muss. Ich verwende es zu einem frühen Zeitpunkt im Skript, um eine Tabelle sqlite3 mit ersten Primärschlüsseldaten zu füllen. Ich benutze es später wieder, um die Daten der Tabelle basierend auf dem, was in der CSV ist, zu ändern (es gibt einen legitimen Grund für diese Bestellung, verspreche ich).python's csv.reader in Python scheint nicht wirklich irgendwelche Daten zu bekommen
Das Problem tritt beim zweiten Mal auf - meine sqlite3-Tabelle ist definitiv mit dem ersten csv-Reader gefüllt, was bedeutet, dass die erste csv.reader() funktioniert, weil dort die Daten herkommen. Wenn ich später darüber iteriere, gibt es jedoch keine Daten. Es sieht so aus, als ob die csv.reader() vollständig leer ist.
Erlaubt csv.reader() nur ein csv.reader() - Objekt pro Skript? Ich kann mir nicht vorstellen, dass das die Situation ist.
Hier ist der Code ist, das funktioniert: (auffüllt meine Tabelle mit Anfangsdaten)
for file in files:
f = open(file)
csv_f = csv.reader(f)
count = 0
for row in csv_f:
#more code
f.close()
Hier ist der Code, der später nicht mehr im selben Skript tut:
for file in files:
print "opening file ", file
f = open(file)
csv_n = csv.reader(f)
count = 0
thisList = list(csv_n)
Die Art des Casting Liste ist nicht das, was ausflippt, oder? Ich bin ernsthaft ratlos, wie ich dieses Problem beheben kann.
>>> import csv
>>> f = open("ooo.csv", "rb")
>>> r = csv.reader(f)
>>> list(r)
[['a', 'b', 'c'], ['1', '2', '3']]
Es ist nicht eine „Typumwandlung“ (Hinweis: es gibt nicht so etwas wie „typecasting“ in Python)
öffnen Sie Ihre Datei mehrmals oder verwenden Sie das 'f' Handle erneut? Denn wenn Sie am Ende der Datei stehen, ist es kein Wunder, warum es beim zweiten Mal scheitert. –
Haben Sie die Datei nach dem ersten Öffnen geschlossen? Verwenden Sie 'f.close()', nachdem Sie die Tabelle initialisiert haben. Auch die Verwendung einer 'with'-Anweisung schützt Sie vor solchen Fehlern. –
Ich benutze den f-Griff, aber ich habe die Datei jedes Mal geschlossen. Am Ende der ersten Iteration schließe ich die Datei. Ich werde das Beispiel aktualisieren, um das zu zeigen. Und um sicherzugehen, dass das nicht das Problem war, habe ich den Griff umbenannt. Das Problem besteht immer noch. – dmcoding