Я пытаюсь использовать полку для сохранения / загрузки некоторых данных в / из файла.У меня есть список словарей:
inv = [slot0, slot1, slot2, slot3, slot4, slot5, slot6]
И каждый из 7 словарей выглядит так, но с небольшим разбросом значений:
slot0 = {"item_pos": [hud_x + 592, hud_y + 4], "text_pos": [hud_x + 612, hud_y + 25], "item": None, "amount": 0}
ВДля сохранения / загрузки словарей я использую модуль «полка», а вот код для сохранения:
with shelve.open((os.path.join(saves_path, "inventory", "inventory")), "c") as f:
f["slot0_item"] = slot0["item"]
f["slot0_amount"] = slot0["amount"]
f["slot1_item"] = slot1["item"]
f["slot1_amount"] = slot1["amount"]
f["slot2_item"] = slot2["item"]
f["slot2_amount"] = slot2["amount"]
f["slot3_item"] = slot3["item"]
f["slot3_amount"] = slot3["amount"]
f["slot4_item"] = slot4["item"]
f["slot4_amount"] = slot4["amount"]
f["slot5_item"] = slot5["item"]
f["slot5_amount"] = slot5["amount"]
f["slot6_item"] = slot6["item"]
f["slot6_amount"] = slot6["amount"]
Вот код для загрузки:
with shelve.open((os.path.join(saves_path, "inventory", "inventory")), "c") as f:
slot0["item"] = f["slot0_item"]
slot0["amount"] = f["slot0_amount"]
slot1["item"] = f["slot1_item"]
slot1["amount"] = f["slot1_amount"]
slot2["item"] = f["slot2_item"]
slot2["amount"] = f["slot2_amount"]
slot3["item"] = f["slot3_item"]
slot3["amount"] = f["slot3_amount"]
slot4["item"] = f["slot4_item"]
slot4["amount"] = f["slot4_amount"]
slot5["item"] = f["slot5_item"]
slot5["amount"] = f["slot5_amount"]
slot6["item"] = f["slot6_item"]
slot6["amount"] = f["slot6_amount"]
Покаэтот код работает нормально, он очень длинный и неэффективный.Я попытался использовать цикл for для сохранения данных следующим образом:
for slot in inv:
f["slot_item"] = slot["item"]
f["slot_amount"] = slot["amount"]
... И загрузить данные следующим образом:
for slot in inv:
slot["item"] = f["slot_item"]
slot["amount"] = f["slot_amount"]
Однако, когда я использую этометод, словари не сохраняют / загружают свои изменения при перезапуске программы, как они должны.Как я могу (если это возможно) правильно использовать цикл for для эффективного сохранения / загрузки данных с полки?
РЕДАКТИРОВАТЬ: hud_x
и hud_y
оба равны 20