вывод данных в виде словарей в новый файл Python - PullRequest
1 голос
/ 08 августа 2011

Я люблю хранить свои данные после долгой программы на Python как словари в новом скрипте. Это позволяет мне легко импортировать программу (и, следовательно, данные) для дальнейших манипуляций.

Я пишу что-то вроде этого (старый пример):

file = open(p['results']+'asa_contacts.py','w')
print>>file, \
'''
\'''
This file stores the contact residues according to changes in ASA
as a dictionary
\''' 
d = {}
'''

с последующим множеством недоразумений при вводе словарного кода в виде строки:

print>>file, 'd[\'%s\'] = {}'               %st

Мне было интересно, был ли модуль, который делал это автоматически, так как это сэкономило бы мне много времени.

Спасибо

Редактировать: может быть полезно знать, что эти словари, как правило, имеют несколько уровней, как этот, который я использую сегодня:

d[ratio][bound][charge] = a_list

Ответы [ 3 ]

2 голосов
/ 08 августа 2011

Если нет особой причины, по которой вам нужен исходный код - а я подозреваю, что нет, вы просто хотите сериализовать и десериализовать данные с диска - лучшим вариантом будет Python pickle module .

1 голос
/ 08 августа 2011

Я не уверен, что это то, что вы ищете, но попробуйте встроенную функцию repr.

repr(a)
0 голосов
/ 08 августа 2011

Предложение Lossy из repr работает, но repr не специально , предназначенное для сериализации.Я думаю, что было бы немного надежнее использовать инструмент, разработанный для этой цели;и поскольку вам нужно что-то, что читается человеком и доступно для редактирования, json является очевидным выбором.

>>> import json
>>> animals = {'a':'aardwolf', 'b':'beluga', 'c':'civet', 'd':'dik-dik', 
               'e':'echidna', 'f':'fennec', 'g':'goa', 'h':'hyrax', 
               'i':'impala', 'j':'javelina', 'k':'kudu', 'l':'lemur', 
               'm':'macaque', 'n':'nutria', 'o':'orca', 'p':'peccary', 
               'q':'quagga', 'r':'reebok', 's':'serval', 't':'tenrec', 
               'u':'urial', 'v':'vole', 'w':'wallaroo', 'x':'xenurine', 
               'y':'yapok', 'z':'zoologist'}
>>> s = json.dumps(animals)
>>> s[:60] + '...'
'{"a": "aardwolf", "c": "civet", "b": "beluga", "e": "echidna...'
>>> animals = json.loads(s)
>>> animals['w']
u'wallaroo'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...