2016-07-16 11 views
0

Ich bin ein Python-Noob, um das aus dem Weg zu bekommen, und ich schreibe diese Funktionen mit der OOP-Methode nur ein FYI. Meine save_roster-Funktion funktioniert korrekt, es speichert alle Einträge des Wörterbuch-Players in meiner Textdatei 'roster'. Ich bestätigte dies, indem ich in die Textdatei schaute und sicherstellte, dass alles da war. Jetzt, wenn ich load_roster Funktion gehe, lädt es nur den ersten Schlüssel und Wert und keiner der Ruhe und ich kann nicht herausfinden, warum. Jede Hilfe, wie ich das gesamte Wörterbuch oder was ich falsch mache, würde sehr geschätzt werden.Laden der gesamten TXT-Datei ins Wörterbuch

def save_roster(player_roster): 
    print("Saving data...") 
    file = open("roster.txt", "wt") 
    import csv 
    w = csv.writer(open("roster.txt", "w")) 
    for key, val in player_roster.items(): 
     w.writerow([key, val]) 
    print("Data saved.") 
    file.close() 

def load_roster(player_roster): 
    print("Loading data...") 
    import csv 
    file = open("roster.txt", "rt") 
    for key, val in csv.reader(file): 
     player_roster[key] = eval(val) 
     file.close() 
     print("Data Loaded Successfully.") 
     return (player_roster) 
+0

Entschuldigung, danke für Ihre Hilfe unten. Ich habe gerade auf deinen unteren Kommentar geantwortet. – 1fastk

Antwort

0

Ihre return (player_roster) Aussage ist innerhalb der for Schleife, die es nur bedeutet, die erste Zeile liest vor der Rückkehr. Sie müssen die Aussage so außerhalb der Schleife setzen:

def load_roster(player_roster): 
    print("Loading data...") 
    import csv 
    file = open("roster.txt", "rt") 
    for key, val in csv.reader(file): 
     player_roster[key] = eval(val) 
    file.close() 
    print("Data Loaded Successfully.") 
    return (player_roster) 
+0

Danke für Ihre Antwort, aber wenn diese Anweisungen außerhalb der for-Schleife ziehen, bekomme ich den Fehler (für Schlüssel, val in csv.reader (Datei): ValueError: nicht genug Werte zu entpacken (erwartet 2, 0) – 1fastk

+0

ist da eine leere Zeile in Ihrem roster.txt? Weil das verursacht diesen Fehler, wenn ich Ihren Code testen – masteryoom

+0

Ja gibt es einen leeren zwischen jedem Eintrag innerhalb der Textdatei – 1fastk