Я думаю, вы должны рассмотреть возможность использования shelve
модуля, который обеспечивает постоянные файловые объекты словаря. Его легко использовать вместо «реального» словаря, потому что он почти прозрачно обеспечивает вашу программу чем-то, что можно использовать так же, как словарь, без необходимости явно преобразовывать его в строку и затем записывать в файл (или наоборот). Versa).
Основное различие заключается в том, что сначала необходимо выполнить 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}