Подтвердить что ты не робот

Самый простой способ сохранить структуру данных в файле в python?

Скажем, у меня есть что-то вроде этого:

d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }

Какой самый простой способ прогамматически получить это в файл, который я могу загрузить с python позже?

Можно ли как-то сохранить его как источник python (изнутри python script, а не вручную!), а затем import позже?

Или я должен использовать JSON или что-то в этом роде?

4b9b3361

Ответ 1

Используйте модуль pickle.

import pickle
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }
afile = open(r'C:\d.pkl', 'wb')
pickle.dump(d, afile)
afile.close()

#reload object from file
file2 = open(r'C:\d.pkl', 'rb')
new_d = pickle.load(file2)
file2.close()

#print dictionary object loaded from file
print new_d

Ответ 2

Сделайте выбор: Стандартная библиотека Python - Устойчивость данных. Какой из них наиболее подходит, может отличаться в зависимости от ваших конкретных потребностей.

pickle, вероятно, является самым простым и наиболее способным, поскольку "записывать произвольный объект в файл и восстанавливать его" идет-it может автоматически обрабатывать пользовательские классы и круговые ссылки.

Для наилучшей производительности травления (скорость и пространство) используйте cPickle в HIGHEST_PROTOCOL.

Ответ 3

Попробуйте модуль полки, который даст вам постоянный словарь, например:

import shelve
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }

shelf = shelve.open('shelf_file')
for key,val in d.items():
    shelf[key] = val

shelf.close()

....

# reopen the shelf
shelf = shelve.open('shelf_file')
print shelf # => {'qwerty': [4, 5, 6], 'abc': [1, 2, 3]}

Ответ 4

Если вы хотите сохранить его в удобном для чтения формате JSON, используйте repr для сериализации объекта и eval для десериализации его.

repr(object) -> string

Возвращает каноническое строковое представление объекта. Для большинства типов объектов eval(repr(object)) == object.

Ответ 5

Вы также можете взглянуть на Zope Object Database, тем сложнее вы получите:-) Наверное, избыток для того, что у вас есть, но он хорошо масштабируется и не слишком сложно использовать.

Ответ 6

Чтобы добавить к предыдущим предложениям, если вы хотите, чтобы формат файла был легко читаемым и изменяемым, вы также можете использовать YAML. Он отлично работает для вложенных диктов и списков, но масштабирует для более сложных структур данных (т.е. С участием пользовательских объектов), а его большой плюс заключается в том, что формат читается.

Ответ 7

JSON имеет ошибки, но когда он отвечает вашим потребностям, это также:

  • прост в использовании
  • входит в стандартную библиотеку в качестве json module
  • немного похож на pickle, который может обрабатывать более сложные ситуации
  • редактируемый человеком текст для отладки, совместного использования и контроля версий
  • действительный код Python
  • хорошо установленный в Интернете (если ваша программа касается любого из этого домена)