Я думаю, вам слід розглянути можливість використання shelve
модуля, який забезпечує стійкі файлозахисні об’єкти, схожі на словник. Його легко використовувати замість "справжнього" словника, оскільки він майже прозоро забезпечує вашу програму тим, що можна використовувати так само, як словник, без необхідності явно перетворювати його в рядок, а потім записувати у файл (або віце- навпаки).
Основна відмінність полягає в необхідності спочатку open()
його перед першим використанням, а потім, close()
коли ви закінчите (і, можливо, інший) sync()
, залежно відwriteback
варіанту). Будь-які створені об’єкти файлів "на полиці" можуть містити звичайні словники як значення, що дозволяє їх логічно вкладати.
Ось тривіальний приклад:
import shelve
shelf = shelve.open('mydata') # open for reading and writing, creating if nec
shelf.update({'one':1, 'two':2, 'three': {'three.1': 3.1, 'three.2': 3.2 }})
shelf.close()
shelf = shelve.open('mydata')
print shelf
shelf.close()
Вихід:
{'three': {'three.1': 3.1, 'three.2': 3.2}, 'two': 2, 'one': 1}