В python я пытаюсь сохранить список в файл. Я пробовал pickle, json, et c, но ни один из них не поддерживает классы, находящиеся в этих списках. Я не могу пожертвовать списками или классами, я должен поддерживать оба. Как я могу это сделать?
Моя текущая попытка:
try:
with open('file.json', 'r') as file:
allcards = json.load(file)
except:
allcards = []
def saveData(list):
with open('file.json', 'w') as file:
print(list)
json.dump(list, file, indent=2)
saveData вызывается в другом месте, и я сделал все тестирование, которое могу, и определил, что ошибка возникает из-за попытки сохранить список из-за включения классов. Он выдает ошибку
Объект типа Card не JSON сериализуемый
всякий раз, когда я выполняю метод JSON, а любой другой метод даже не выдает ошибки, но не загружает список, когда я перезагружаю программу.
Редактировать: Что касается метода pickle, вот как это выглядит:
try:
with open('allcards.dat', 'rb') as file:
allcards = pickle.load(file)
print(allcards)
except:
allcards = []
class Card():
def __init__(self, owner, name, rarity, img, pack):
self.owner = str(owner)
self.name = str(name)
self.rarity = str(rarity)
self.img = img
self.pack = str(pack)
def saveData(list):
with open('allcards.dat', 'wb') as file:
pickle.dump(list, file)
Когда я это делаю, все, что происходит, это то, что код работает как обычно, но список не сохраняется. И печать (allcards) тоже не срабатывает, что заставляет меня поверить, что он каким-то образом не обнаруживает файл или вызывает какую-то другую ошибку, приводящую к тому, что он просто переходит к исключению. Кроме того, предполагается, что img всегда будет ссылкой, в случае, если что-то изменится.
У меня нет другого пути, которым я могу помочь, чтобы решить эту проблему, но я могу опубликовать больше кода, если это будет необходимо.
Пожалуйста, помогите, и спасибо заранее.