2011-08-07 4 views
1

私は長いスクリプトの後に自分のデータを新しいスクリプトの辞書として保存するのが好きです。これにより、私はプログラム(したがってデータ)を簡単にさらに操作するためにインポートすることができます。新しいpythonファイルの辞書としてデータを出力します

私はこの(旧例)のような何か書く:があった場合、私は思っていた

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

文字列として辞書コードを入力周りfaffingの多くが続く
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 = {} 
''' 

をそれは私に多くの時間を節約するために自動的にこれをしたモジュールです。

はありがとう

編集:これらの辞書は深い私は、今日使用しています。このような通常いくつかの層であることを知っておくと便利かもしれ:

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

答えて

1

これはあなたが探しているものかどうかはわかりませんが、inbuilt関数reprを試してみてください。 repr

repr(a) 
+0

私が探していたものです!ありがとう – Anake

2

あなたが必要とする特別な理由があるのない限りソースコード - 私はそうではないと思われます。ディスクからデータをシリアル化してデシリアライズしたいだけです - より良い選択肢はPythonのpickle moduleです。

+0

ありがとうございます。ソースコードを書き換えた後に変更することは重要です(残念ながらこのようなことがあります)。しかし、cPickleのスピードが向上したのは何度かありました。 – Anake

0

Lossy's suggestionは仕事に起こるが、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' 
関連する問題