Распаковка переменных из списка с помощью pickle - Python - PullRequest
0 голосов
/ 13 марта 2019

Я создаю текстовую RPG с Python 3 и использую pickle для сериализации / сохранения.То, что я пытаюсь сделать, это вместо того, чтобы вводить каждую переменную в функцию dump для pickle, у меня есть их в списке, чтобы впоследствии я мог сохранять динамические данные, например, если игрок рубит дерево в определенной ячейкемир, он добавляет его в список вещей, чтобы сохранить в следующий раз, когда игрок спасает.Функция дампа работает со списком и циклом 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"))

«self.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?

...