电话簿python

时间:2012-01-08 10:17:33

标签: python

您好我是python的新手,di最近使用字典功能创建了一个电话簿,然后使用py2exe更改为exe。我现在面临一个问题,我在电话簿中输入姓名,然后当我退出程序并返回时,所有号码都消失了。那有没有办法保存输入程序的姓名和号码?请给我代码,因为我正在为我的班级做这个,如果每次退出电话簿时数字都会消失,他们会很生气!请帮忙!

2 个答案:

答案 0 :(得分:2)

如果您还不想学习关系数据库,NoSQL或云解决方案,可以先使用shelve module

答案 1 :(得分:0)

好吧,主要的问题是你确实在数据库中存储了新值,在这种情况下用dict表示,但你不能在脚本执行之间保存它的条件。脚本中存在对象的时间 - 脚本由解释器运行,而对象有一些链接。当你重新启动你的程序时 - 你开始重新运行你的脚本,它只在dict中存储了在脚本中指定的元素。

在我看来,最简单的解决方案是使用python 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"))

希望你熟悉python函数,如果没有 - 你可以阅读here