2012-01-08 4 views
0

안녕하세요, 저는 python에 처음 익숙합니다. di는 최근에 사전 기능을 사용하여 전화 번호부를 만든 다음 py2exe를 사용하여 exe 파일로 변경했습니다. 나는 전화 번호부에 이름을 입력 한 다음 프로그램을 종료하고 모든 번호가 없어지면 다시 문제가 발생합니다. 프로그램에 입력 된 이름과 번호를 저장하는 방법이 있습니까? 제 수업 시간에 코드를 작성해주세요. 전화 번호부를 빠져 나올 때마다 숫자가 사라지면 화가 날 것입니다. 도와주세요!전화 번호부 python

+0

구글'파이썬 persistence'를 읽을 수 있습니다 .. –

+0

자신에게 질문하십시오 : 일반 응용 프로그램은 입력 한 데이터를 어떻게 저장합니까? – MatthewD

+0

Felix가 말한 것처럼, "Google에 저장"하고 코드를 직접 작성해야합니다. 필요한 모든 세부 정보가 없어도 일반적인 "저장하고로드하는"방법은 없습니다. –

답변

2

아직 관계형 데이터베이스, NoSQL 또는 클라우드 솔루션을 배우고 싶지 않은 경우 shelve module을 사용하여 시작할 수 있습니다.

+0

mmmm 가능한 한 쉽게 튜토리얼을 제공하거나 코드를 제공한다면 좀 더 자세한 정보를 알려줄 수 있습니까? –

0

글쎄, 주된 문제는 데이터베이스에 새로운 값을 저장한다는 것인데,이 경우에는 dict으로 표시되지만 스크립트 실행 사이에 조건을 저장하지 마십시오. 스크립트에있는 객체의 기존 시간 - 스크립트가 인터프리터에 의해 실행되고 객체에 대한 링크가있는 동안. 프로그램을 다시 시작할 때 스크립트를 다시 실행하기 시작하고 스크립트 중에 지정된 요소 만 dict에 저장합니다.

제 생각에 가장 간단한 해결책은 파이썬 pickle module을 사용하는 것입니다. 그 dict을 파일로 저장 한 다음 스크립트의 구걸로로드하고 마지막에 저장합니다.

당신은 이런 일에 스크립트 코드를 업데이트 할 필요가 없습니다 :

default = {'Sarah': 7736815441, 
      'John': 7736815442} 
def start(): 
    #some code here, before you're trying to access phone numbers in your dict 
    try: 
     phonebook = pickle.load(open("data.pb", "r")) 
    except IOError: 
     phonebook = default 

#your script here 

def exit(): 
    #some code here, last chance to modify your dict, 
    #so changes will appear in next program executions 
    pickle.dump(phonebook, open("data.pb", "w")) 

당신이 파이썬 기능에 익숙 희망, 더는 경우 - 당신이에 대해 다음 here

+0

dicts뿐만 아니라 사용자 정의 클래스의 인스턴스 (일부 제한 사항은 문제가되지 않음)를 제거 할 수 있습니다. –

+0

안녕하세요 당신이 코드를 기꺼이 도와 주시겠습니까? 코드를 수정하여 보내 주시겠습니까? 나는 이것을 정말로 필요로한다! 감사합니다 –

+0

@RomanSusi 그래, 나도 알아,하지만이 경우, 내가 가지고있는대로 dict는 변화하는 대상이다. –

관련 문제