2016-07-16 5 views
0

私はpython noobを使っていないので、OOPメソッドを使ってこれらの関数を書いています。私のsave_roster関数は正しく動作し、辞書プレーヤーのすべてのリストをテキストファイル 'roster'に保存します。私はテキストファイルを見て、それがすべてそこにあることを確認して確認しました。今、私がload_roster関数に行くとき、それは最初のキーと値だけをロードし、残りのものはロードせず、なぜそれを理解できないのですか?どのように私が辞書全体を読み込むことができるか、または私が間違ってやっていることについてのどんな助けも大歓迎であろう。辞書にtxtファイル全体をロードしていない

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

ご協力いただきありがとうございます。私はちょうどあなたの低いコメントに答えました。 – 1fastk

答えて

0

あなたreturn (player_roster)文はそれだけで返す前に最初の行を読み込み意味forループの内側にあります。次のようにステートメントをループの外側に置く必要があります。

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

あなたの答えに感謝しますが、forループの外でこれらの命令をプルするとエラーが発生します(キー、csv.reader(ファイル)のval: ValueError:解凍するに値が足りません(期待値2、0) – 1fastk

+0

Isあなたのroster.txtに空の行がありますか?あなたのコードをテストするとそのエラーが発生する – masteryoom

+0

はい、テキストファイル内の各エントリが空になっています – 1fastk

関連する問題