Вы можете сделать это, позвонив
root.state('zoomed')
Я бы использовал полку
, json
, yaml
или что-то еще, как предлагают другие ответы.
shelve
особенно хорош, потому что вы можете иметь dict
на диске и при этом использовать его. Значения будут загружены по запросу.
Но если вы действительно хотите проанализировать текст dict
, он содержит только str
ings, int
s и tuple
s, как вы показали, вы можете использовать ast.literal_eval
для его анализа. Это намного безопаснее, так как вы можете ' t eval полные выражения с ним - он работает только с str
ings, numbers, tuple
s, list
s, dict
s, bool
eans и Нет
:
>>> import ast
>>> print ast.literal_eval("{12: 'mydict', 14: (1, 2, 3)}")
{12: 'mydict', 14: (1, 2, 3)}
Почему бы не использовать рассол питона ? В Python есть отличный модуль сериализации, который называется pickle. Он очень прост в использовании.
import cPickle
cPickle.dump(obj, open('save.p', 'wb'))
obj = cPickle.load(open('save.p', 'rb'))
У pickle есть два недостатка:
Если вы используете python 2.6, есть встроенный модуль json . Его так же легко использовать:
import json
encoded = json.dumps(obj)
obj = json.loads(encoded)
Формат Json удобочитаем и очень похож на представление строки словаря в Python. И не имеет таких проблем с безопасностью, как рассол. Но может быть медленнее, чем cPickle.
Я бы посоветовал вам использовать YAML для вашего формата файла, чтобы вы могли повозиться с ним на диске
How does it look:
- It is indent based
- It can represent dictionaries and lists
- It is easy for humans to understand
An example: This block of code is an example of YAML (a dict holding a list and a string)
Full syntax: http://www.yaml.org/refcard.html
Чтобы получить его в python, просто easy_install pyyaml. См. http://pyyaml.org/
Он поставляется с простыми функциями сохранения / загрузки файлов, которые я не могу вспомнить прямо сейчас.
Запишите его в сериализованном формате, таком как pickle (модуль стандартной библиотеки Python для сериализации) или, возможно, с помощью JSON (который является представлением, которое можно преобразовать, чтобы снова создать представление памяти. ).
This solution at SourceForge uses only standard Python modules:
y_serial.py module :: warehouse Python objects with SQLite
"Serialization + persistance :: in a few lines of code, compress and annotate Python objects into SQLite; then later retrieve them chronologically by keywords without any SQL. Most useful "standard" module for a database to store schema-less data."
http://yserial.sourceforge.net
The compression bonus will probably reduce your 6GB dictionary to 1GB. If you do not want a store a series of dictionaries, the module also contains a file.gz solution which might be more suitable given your dictionary size.