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

Я использую pyinstaller

pip install pyinstaller

Я не знаю, но pyinstaller не добавляет sip.pyd. Итак, вам нужна PyQt5 \ sip.pyd . Я рекомендую хороший стиль windows qwindowvistastyle.dll .

Создайте файл build.cmd как:

pyinstaller --onefile --clean ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\sip.pyd;PyQt5" ^
    --add-binary="C:\Users\Quazer\.virtualenv\pyqt5-36\Lib\site-packages\PyQt5\Qt\plugins\styles\qwindowsvistastyle.dll;PyQt5\Qt\plugins\styles" ^
    .\main.py

^ - новая строка в файле команды (.cmd, .bat)

29
задан Blorgbeard 26 June 2009 в 04:22
поделиться

7 ответов

Используйте модуль соления .

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
58
ответ дан ecounysis 26 June 2009 в 04:22
поделиться

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

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

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

12
ответ дан Miles 26 June 2009 в 04:22
поделиться

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

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

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

shelf.close()

....

# reopen the shelf
shelf = shelve.open('shelf_file')
print(shelf) # => {'qwerty': [4, 5, 6], 'abc': [1, 2, 3]}
7
ответ дан mhawke 26 June 2009 в 04:22
поделиться

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

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

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

repr(object) -> string

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

3
ответ дан John Kugelman 26 June 2009 в 04:22
поделиться

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

4
ответ дан Jay Atkinson 26 June 2009 в 04:22
поделиться

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

2
ответ дан Eli Bendersky 26 June 2009 в 04:22
поделиться
Другие вопросы по тегам:

Похожие вопросы: