Я пытаюсь сохранить объект со списком объектов другого класса.
def loadBot(self, name):
BotFile = open('../Bots/' + name, 'rb+')
self.CurrentBot = pickle.load(BotFile)
BotFile.close() # Closes file
def saveBot(self, bot):
BotFile = open('../Bots/' + bot.Name, 'wb+')
BotFile.truncate() # Clear File
pickle.dump(bot, BotFile, protocol=pickle.HIGHEST_PROTOCOL)
BotFile.close() # Close file
Это функции, которые я использую для загрузки объекта и сохранения.В объекте Bot у меня есть список объектов 'Blueprint' и функция add blueprint.
class ChatBot:
Name = 'DefaultName'
Token = 'DefaultToken'
bot_blueprints = []
def __init__(self, Name, Token):
self.Name = Name
self.Token = Token
def addBlueprint(self):
self.bot_blueprints.append(Blueprint(len(self.bot_blueprints)))
Я добавляю новый элемент и проверяю размер списка перед сохранением и после
app.loadBot('A')
print(len(app.CurrentBot.bot_blueprints))
app.CurrentBot.addBlueprint()
app.saveBot(app.CurrentBot)
print(len(app.CurrentBot.bot_blueprints))
Это начинается с0, после добавления bp становится 1. После этого я закрываю приложение, запускаю его второй раз, и мой код должен написать 1 после открытия и 2 после добавления, но все равно 0 и 1. Размер файла растет, но pickle не может правильно загрузить мой файл.