用pickle-Python从列表中解包变量

2024-05-26 21:54:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用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解包变量吗?你知道吗


Tags: toselfyou列表forinputsavedef

热门问题