代码是更大程序的一部分。 Save函数保存全局数据(我知道您不应该使用全局变量),而Load函数应该加载它,并将全局变量更改为已加载的对象。我知道列表仅保存分配的对象,而不保存变量本身,但是我不知道如何才能做到这一点。 对于这种情况,有一种解决方案必须更改我保存var的方式,并且还要在代码中放入有效的Save函数。 感谢您的帮助。
我在互联网上搜索了一个解决方案,并尝试了一些模块,但无法正常工作。
#works
def Save():
global a, b, c, d, e
toSave = [a, b, c, d, e]
count = 0
f = open("file.txt", "w") #file where the vars get saved and should be loaded from
for x in range(len(toSave)):
save = toSave[count]
f.write(str(save)+"\n") #writes the objects the vars are assigned to into a file which each objekt having it's own row
count += 1
tkinter.messagebox.showinfo("Save","Your progress got saved.")
def Load():
global a, b, c, d, e
toLoad = [a, b, c, d, e]
count = 0
f = open("file.txt", "r")
for x in range(len(toLoad)):
toLoad[count] = f.readline() #changes the numbers in the list. Should change the global vars
count += 1
tkinter.messagebox.showinfo("Load","Your progress got loaded.")
我只希望全局变量成为已保存的对象,所以我可以在程序中加载和保存保存文件(这是一个小游戏)。
答案 0 :(得分:0)
您必须将数据显式分配给相关变量:
a, b, c, d, e = the_list
或使用一个可以保存数据的全局对象:
GameState = {
"level": 1,
"player": {
"health": .9,
"strength": .2
}
}
然后在您的函数中修改该单个对象。
答案 1 :(得分:0)
将所有内容另存为JSON数据,然后将其作为字典重新带回,并使用它来加载全局变量。
import json
#works
def Save():
global a, b, c, d, e
save_dict = {
'a': a,
'b': b,
'c': c,
'd': d,
'e': e
}
json_save_data = json.dumps(save_dict)
with open('file.json' mode='w') as file:
file.write(json_save_data)
tkinter.messagebox.showinfo("Save","Your progress got saved.")
def Load():
global a, b, c, d, e
with open('file.json', "r") as file:
data = file.readlines()
global_dict = json.loads(data)
a = global_dict['a']
b = global_dict['b']
c = global_dict['c']
d = global_dict['d']
e = global_dict['e']
tkinter.messagebox.showinfo("Load","Your progress got loaded."