2011-08-07 2 views
1

저는 새 스크립트에서 사전처럼 길쭉한 파이썬 프로그램으로 데이터를 저장하고 싶습니다. 그러면 더 많은 조작을 위해 프로그램 (따라서 데이터)을 쉽게 가져올 수 있습니다.새로운 파이썬 파일에서 사전으로 데이터를 출력합니다.

나는 이런 식으로 뭔가 (오래된 예) 쓰기 :이 있다면

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' 
관련 문제