2013-08-31 3 views
2

다른 질문이 있으므로이 질문을 보았습니다. 그러나 그들은 너무 기술 적이기 때문에 이해하기가 쉽지 않았습니다. 나는 전화 번호부를 만드는 중이라서 그리고 난 그렇게 같은 사전을 저장하기 위해 노력하고,python 3 사전 저장하기

numbers = {} 
def save(a): 
    x = open("phonebook.txt", "w") 
    for l in a: 
     x.write(l, a[l]) 
    x.close() 

하지만 난 단지 1 개 인자를 가지고 OBV 메신저 2 통과) (오류 쓰기를 얻을, 그래서 내 질문에 내가이 작업을 수행 할 수있는 방법입니다 초보자 freindly 방법으로 당신은 비 기술적 인 방법으로 그것을 설명 할 수 있습니다. 고마워요.

+0

예상되는 출력 형식은 무엇입니까? – badc0re

+0

@SrinivasReddyThatiparthy 그 의견을 삭제해야합니다. 끔찍한 조언. – blakev

+0

초급 친화 :) :)하지만 충분하다. –

답변

4

그것은 파일에// 로딩 사전을 덤핑에 대한 json 모듈을 사용하는 것이 좋습니다 : JSON은 좋은 선택 및 교차 언어와 브라우저에서 지원하지만

>>> import json 
>>> numbers = {'1': 2, '3': 4, '5': 6} 
>>> with open('numbers.txt', 'w') as f: 
...  json.dump(numbers, f) 
>>> with open('numbers.txt', 'r') as f: 
...  print json.load(f) 
... 
{u'1': 2, u'3': 4, u'5': 6} 
+0

답해 주셔서 감사합니다.하지만 '함께'와 '같이'설명 할 수 있습니까? .dump는 .write이고 .load는 .read – StandingBird

+0

입니다. @PaulR 확실합니다. [with] (http://docs.python.org/2/reference/compound_stmts.html#the-with-with-statement)는 다음과 같습니다. context manager,'try : except : finally :'상용어 코드를 대체하는 바로 가기. 'dump'는 쓰기이고,'load'는 읽기입니다. – alecxe

+0

좋은 도움이되었습니다. 고마워요. 마지막으로 한 가지 방법을 다 끝냈거나 필요하지 않습니다. – StandingBird

0

모듈 json 모듈을 사용해야하고 JSONEncode 모듈을 사용해야합니다. 모듈을 사용하여 새 개체를 파일에 쓸 수 있습니다.

파일을 읽을 때 다시 파이썬 사전으로 변환하려면 JSONDecode해야합니다.

>>> import json 
>>> d = {1:1, 2:2, 3:3} 
>>> d 
{1: 1, 2: 2, 3: 3} 
>>> json.JSONEncoder().encode(d) 
'{"1": 1, "2": 2, "3": 3}' 
>>> with open('phonebook.txt', 'w') as f: 
    f.write(json.JSONEncoder().encode(d)) 

>>> with open('phonebook.txt', 'r') as f: 
    print f.readlines() 

['{"1": 1, "2": 2, "3": 3}'] 
+0

'json.dump()'와'json.load()'함수를 사용하는 것이 일반적으로 더 간단하다. 'json.dump (d, f)'와 같이 쓰고'json.load (f)'와 같이 읽는다. – cellofellow

3

, 파이썬이 그 훨씬 더 유연한 pickle이라는 자체 직렬화 형식.

import pickle 

data = {'Spam': 10, 'Eggs': 5, 'Bacon': 11} 

with open('/tmp/data.pickle', 'w') as pfile: 
    pickle.dump(data, pfile) 

with open('/tmp/data.pickle', 'r') as pfile: 
    read_data = pickle.load(pfile) 

print(read_data) 

피클은이 "안전"으로 간주 아니에요으로 (예 : 웹을 통해 같은) 다른 언어로 작업하고, 신뢰할 수없는 출처의 피클 데이터를로드하지 않도록주의하지 않는, 파이썬 다릅니다.

피클은 자신의 클래스 인스턴스를 포함하여 다른 데이터 형식에도 사용할 수 있습니다.