我正在用python3创建一个基于文本的RPG,并使用pickle进行序列化/保存。我所要做的不是在pickle的dump函数中输入每个变量,而是将它们放在一个列表中,以便以后保存动态数据,例如,如果玩家在世界的某个地砖上砍下一棵树,它会在下次保存时将其添加到要保存的内容列表中。dump特性与列表和for循环一起工作,如下所示
def save(self):
save = input("What would you like to name the save?(This will overwrite): ")
y = 0
for x in self.gsd:
pickle.dump([x], open("{0}.tin".format(save), "wb"))
““自我.gsd“”是“常规保存数据”的列表。列表如下所示:
self.gsd = [self.scwpriv, self.scwvisited, self.wallet[I.goldpiece], self.skillblacksmith, self.skillgunsmith, self.skillfishing, self.skillleatherwork, self.skillbuilding, self.skillmining, self.skillforaging, self.skillhunting, self.skillcooking, self.skillalch, self.xpblacksmith, self.xpblacksmithnext, self.xpbuilding, self.xpbuildingnext, self.xphunting, self.xphuntingnext, self.xpcooking, self.xpcookingnext, self.xpfishing, self.xpfishingnext, self.xpforaging, self.xpforagingnext,
self.xpmining, self.xpminingnext, self.xpalch, self.xpalchnext, self.xpgunsmith, self.xpgunsmithnext, self.xpforaging, self.xpforagingnext, self.xpleatherwork, self.xpleatherworknext, self.stackinv, self.maxhealth, self.inventory, self.questlog, self.compquests, self.name, self.health, self.xpos, self.ypos, self.rs, self.ms, self.hs, self.cs, self.ps, self.fs, self.damage, self.gundamage, self.shot, self.reloading, self.defence, self.status, self.fighting, self.ammo, self.gold, self.devenabled]
当我使用dump将列表中的每个变量保存为for循环时,它似乎可以工作。问题是,当我尝试使用相同的方法将其加载回pickle时,使用另一个for循环,如下所示:
def loadt(self):
load = input("What file would you like to load: ")
for x in self.gsd:
x = pickle.load(open("{0}.tin".format(load), "rb"))
没有错误,它不会崩溃,但是它只是简单的不加载变量。我做错什么了?我可以不使用for循环来用pickle解包变量吗?你知道吗
目前没有回答
相关问题 更多 >
编程相关推荐