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

Предположим, у меня есть что-то вроде этого:

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

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

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

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

  • Итерации по строкам строки
  • Вызов API REST из представления django
  • не может импортировать имя GoogleMaps в python
  • Преобразование timedelta в плавающую точку
  • Почему тело класса выполняется во время определения?
  • Вход в LinkedIn с сеансами запросов python
  • Помещение переменной внутри строки (python)
  • Понимание вложенного списка
  • 7 Solutions collect form web for “Самый простой способ сохранить структуру данных в файле в python?”

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

     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 

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

    pickle , вероятно, является самым простым и наиболее способным, поскольку «записывает произвольный объект в файл и восстанавливает его» – он может автоматически обрабатывать пользовательские классы и циклические ссылки.

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

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

     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]} 

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

    repr(object) -> string

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

    Вы также можете захотеть взглянуть на базу данных объектов Zope, более сложную вы получите 🙂 Наверное, избыток для того, что у вас есть, но оно хорошо масштабируется и не слишком сложно использовать.

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

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

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