Python, pickling list to file
Python, pickling list to file
我在测验挑战中遇到了问题。测验结束后,应将分数和玩家姓名发送到 dat 文件。问题是当我尝试打开保存的文件时,我只看到一条 name:score 记录。哪里出错了?
完整代码:code
在代码中,add_score def 应该将分数保存到列表中,在完成整个代码后我想打开它。有人可以帮助我吗?
def add_score(name,score):
"""
Dodaje wynik do osobnego pliku .
:param name:
:param score:
:return:
"""
my_list = []
scores = (name,score)
my_list.append(scores)
with open("score_games.dat", "ab") as f:
pickle.dump(my_list, f)
f.close()
然后当我尝试打开乐谱时:
main()
print("Wyniki gry:")
with open("score_games.dat", "rb") as f:
my_list_1 = pickle.load(f)
print(my_list_1)
f.close()
这里的问题是,每次调用 add_score()
时,您都会创建一个包含单个条目的全新列表,然后对其进行 pickle。因此,当你加载 pickle 文件时,你会得到最后一个 pickled 列表,它只包含一个条目。
add_score()
应该先加载 pickled 列表,然后将分数添加到其中,然后再 pickle。
def add_score(name,score):
"""
Dodaje wynik do osobnego pliku .
:param name:
:param score:
:return:
"""
try:
# Load the existing list of scores first, if it exists
with open("score_games.dat", "rb") as f:
my_list = pickle.load(f)
except FileNotFoundError:
my_list = []
scores = (name,score)
my_list.append(scores)
with open("score_games.dat", "ab") as f:
pickle.dump(my_list, f)
f.close()
我在测验挑战中遇到了问题。测验结束后,应将分数和玩家姓名发送到 dat 文件。问题是当我尝试打开保存的文件时,我只看到一条 name:score 记录。哪里出错了? 完整代码:code
在代码中,add_score def 应该将分数保存到列表中,在完成整个代码后我想打开它。有人可以帮助我吗?
def add_score(name,score):
"""
Dodaje wynik do osobnego pliku .
:param name:
:param score:
:return:
"""
my_list = []
scores = (name,score)
my_list.append(scores)
with open("score_games.dat", "ab") as f:
pickle.dump(my_list, f)
f.close()
然后当我尝试打开乐谱时:
main()
print("Wyniki gry:")
with open("score_games.dat", "rb") as f:
my_list_1 = pickle.load(f)
print(my_list_1)
f.close()
这里的问题是,每次调用 add_score()
时,您都会创建一个包含单个条目的全新列表,然后对其进行 pickle。因此,当你加载 pickle 文件时,你会得到最后一个 pickled 列表,它只包含一个条目。
add_score()
应该先加载 pickled 列表,然后将分数添加到其中,然后再 pickle。
def add_score(name,score):
"""
Dodaje wynik do osobnego pliku .
:param name:
:param score:
:return:
"""
try:
# Load the existing list of scores first, if it exists
with open("score_games.dat", "rb") as f:
my_list = pickle.load(f)
except FileNotFoundError:
my_list = []
scores = (name,score)
my_list.append(scores)
with open("score_games.dat", "ab") as f:
pickle.dump(my_list, f)
f.close()