Ich bin ein Anfänger Python-Programmierer, so dass die Antwort einfach sein kann. Allerdings habe ich mehrere Tage damit verbracht, diese Frage zu untersuchen, und ich bin ratlos. Dies ist auch mein erster Stack-Overflow-Post, also bitte sei nett, wenn ich hier eine Regel verletze. :)Python: Schreiben Sie ein Wörterbuch in eine Textdatei (CSV?) Und lesen Sie diese Textdatei in ein Wörterbuch
Mit Python möchte ich zwei Felder in mehreren Zeilen in eine neue Textdatei schreiben, und bei einem späteren Lauf lesen Sie diese Textdatei in ein neues Wörterbuch, um die vorherigen Werte zu referenzieren.
Ich teste den Code, den ich hier gefunden habe: Example code. Die angebotene Lösung hat 64 Ups und wird vom Fragesteller als beste Antwort markiert. So scheint es für die meisten Leute zu stimmen.
Mein Testcode erstellt erfolgreich ein erstes Wörterbuch mydict und speichert es in einer Textdatei. Wenn ich jedoch versuche, die Textdatei wieder in ein neues Wörterbuch zu schreiben mydict2, bekomme ich ... nichts ... nichts, keine Fehlermeldung oder irgendetwas, keine Ahnung, nur nichts.
Was fehlt mir hier?
Hier ist mein Testcode:
1,11
2,22
3,33
Hier sind die Ergebnisse angezeigt, wenn ich laufen:
import csv
mydict = {1:11,2:22,3:33}
print mydict
print mydict[1]
writer = csv.writer(open('dict.csv', 'wb'))
for key, value in mydict.items():
writer.writerow([key, value])
reader = csv.reader(open('dict.csv', 'rb'))
mydict2 = dict(reader)
print mydict2
Hier sind die Inhalte der Textdatei, die es erstellt der Testcode lautet:
{1: 11, 2: 22, 3: 33}
11
{}
Wie Sie in den ersten beiden Zeilen der Ergebnisausgabe sehen können, wird das ursprüngliche Ausgabewörterbuch mydict korrekt erstellt und zeigt einen referenzierten Wert an. Die dritte Ausgabezeile zeigt jedoch den Inhalt des neuen Wörterbuchs mydict2 an, das die Daten aus der Textdatei hätte lesen sollen. Der Inhalt der Textdatei wurde jedoch irgendwie nicht in das neue Wörterbuch gelesen, das leer ist.
Wie kann ich das beheben, um den Inhalt der Textdatei in das Wörterbuch zu laden?
Das war's! Es wurde angenommen, dass es sich um einen Dateikonflikt handeln könnte, aber es konnte kein kurzes Beispiel dafür gefunden werden, wie die Datei zwischen den Schreib- und Leseanweisungen geschlossen wird. Gerade recherchiert, dass einige mehr. Es gibt KEINE Möglichkeit, einen Leser direkt zu schließen. Suggested Syntax ist genau das, was Sie verwendet haben, die WITH-Anweisung. – dwwheelock
@dwwheelock das Problem ist nicht Dateikonflikt, aber Pufferung: Daten werden nicht auf der Festplatte gespeichert, sobald Sie es schreiben, aber wenn es genug ist, um den Puffer zu füllen (wenn Sie sequentiell schreiben), oder wenn Sie einige Operationen ausführen auf der Datei, die es zwingt, den Inhalt zu spülen (suchen, flush, schließen, ...) Und yeah, Sie können den Leser nicht schließen (Sie können das vom Leser verwendete Dateiobjekt jedoch schließen). Ich habe mein ursprüngliches Beispiel geändert, um "mit" zu verwenden - ich wollte nur zeigen, wie man mit Wörterbüchern liest/schreibt, nicht um grundlegende Dateisemantik zu lehren ... –
Danke, Ricardo, für den zusätzlichen Kommentar und die Aktualisierungen zu deinem Beispiel. – dwwheelock