2015-11-16 2 views
1

Я пишу простую игру питона, где у меня есть текстовый файл в следующем формате, где ключ слева находится имя игрока и значение по праву является оценка игрока:Как создать словарь на основе текстового файла?

Имя 134

Следующая Наименование 304958

Etc ....

Вопрос: Как я могу читать в текстовый файл в этом формате и создать словарь из VALU es в каждой строке, и как только игрок выходит из программы, файл обновляется последними словарями в словаре?

У меня уже есть код, закомментированный, что я начал, но не смог реализовать и работать. Любая помощь приветствуется.

Вот мой код:

# with open('scores.txt', 'r') as file: 
    #  scores = {} 
    #  for line in file: 
    #   line = line.split() 
    #   do stuff 


    # with open("scores.txt", "w") as f: # Save dictionary in file 
    #  do stuff 
+2

Попробуйте использовать JSON. Это способ хранения словарей в текстовом формате, и почти все языки поддерживают его. –

+0

Что конкретно не работает в вашем коде, у вас есть код там, который выглядит правильно в правильном направлении, но как это происходит? Здесь много ненужного дополнительного кода, можно ли его удалить, чтобы сделать ваш вопрос более ясным? –

+0

@PaulRooney Я удалил дополнительный код. В принципе, я хочу, чтобы моя программа GUI Python Turtle читала в этом файле каждый раз, когда программа запускается и сохраняет ее в словаре, а затем сохраняет ее после завершения программы. – Jason

ответ

1

Чтобы загрузить этот формат:

with open('scores.txt', 'r') as infile: 
    scores = {} 
    for line in infile: 
     name, _, score = line.rpartition(' ') 
     scores[name] = int(score) 

Чтобы сохранить этот формат:

with open('scores.txt', 'w') as outfile: 
    for name, score in scores: 
     outfile.write('%s %s\n' % (name, score)) 

penne12 является правильным, хотя. Вы можете сохранить несколько строк кода, используя библиотеку json, чтобы хранить JSON вместо этого конкретного текстового формата.

0

Вот пример, который использует JSON, как предложено в комментариях:

import json 
def load_game_data(): 
    data = None 
    with open('savegame.json', 'r') as savefile: 
     data = json.load(savefile) 

    return data 


def save_game_data(data): 
    with open('savegame.json', 'w') as savefile: 
     json.dump(data, savefile) 

# Store the game data as a dictionary: 
data = { 'player_name' : 'wolfram', 'hp' : 8 } 
save_game_data(data) 
data = load_game_data() 

print(data) 
# prints {'player_name': 'wolfram', 'hp': 8} 
print(data['player_name']) 
print(data['hp']) 

данные сохранялось на диск в формате JSON и загружается с диска в качестве словаря, который прост в использовании. Разумеется, вам нужно будет добавить обработку ошибок кода, это просто просто иллюстрация.

+0

@SteveJessop Фантастический! Все эти годы я делал это долгий путь, не зная об этом ... Я отредактировал этот пример. – matsuzine

Смежные вопросы