все, я учусь Python
, и мне интересно, как читать список кортежей, которые хранятся в txt
файла, как в следующем случае:как читать список кортежей в Python
У меня есть txt
файл с именем scores.txt
в следующем формате:
('name1', 8)
('name2', 2)
('name3', 4)
...
Теперь я хочу прочитать scores.txt
в список сказать scores
, так что я могу сортировать результаты в порядке убывания, и сделать некоторые дальнейшей обработки. Мне интересно, как это сделать.
Это практика для поддержания списка высоких баллов, хранящегося в файле txt
. Функция необходима для чтения оценок из файла и добавления новой оценки каждый раз при вызове функции. Список оценок необходимо отсортировать перед сохранением в файле txt
(score.txt
). Если score.txt
не существует раньше, он будет создан первым. Я позаимствовал кусок кода где-то для справки и имел рабочий раствор:
def high_score(score):
"""Records a player's score and maintains a highscores list"""
# no previous high score file
try:
with open("high_scores.txt", "r") as f:
high_scores = [ast.literal_eval(line) for line in f]
except FileNotFoundError:
high_scores = []
#add a score // Do current stuff for adding a new score...
name = input("What is your name? ")
entry = (name, score)
high_scores.append(entry)
high_scores.sort(key = lambda x: -x[1])
high_scores = high_scores[:5] # keep only top five
# write scores to high_scores.txt
with open("high_scores.txt", "w") as f:
for score in high_scores:
f.write(str(score) + "\n")
Проблемы для меня в том, чтобы преобразовать строки, хранящиеся в high_scores.txt
в int
для сохранения (name, score)
кортежа в high_scores
. И это было разрешено с помощью утилиты ast
literal_eval
.
магазин это в лучшем сериализуемой формате, т.е. 'json.dump (баллы, file_handle)' –