如何将字典存储在文件中并读取/写入该文件?

时间:2017-03-23 17:53:20

标签: python file dictionary tkinter

我正在使用tkinter来管理笔记检索程序的GUI。我可以通过键入一个关键词并在文本字段中按Enter来拉我的笔记,但我想将我的字典移动到一个文件中,这样我的代码空间就不会填充大量的字典。

我一直在四处寻找,但我不确定如何做到这一点。 我的文件在我的目录中。我知道我可以使用open(“filename”, “mode”)打开所述文件进行阅读,但如何调用笔记的每个部分。

例如,我现在所做的只是从我的字典中调用一个关键字,并让它将该关键字的定义写入我的GUI中的文本框。我可以从文件中做同样的事吗?

我如何从文件中读取关键字并将定义返回到变量或直接返回到文本框?现在我只需要弄清楚如何读取数据。我想一旦我知道我可以弄清楚如何写新笔记或编辑现有笔记。

这就是我现在的设置方式。

调用我的函数

root.bind('<Return>', kw_entry)

我如何将我的定义返回到我的文本框

def kw_entry(event=None):
    e1Current = keywordEntry.get().lower()
    if e1Current in notes:
        root.text.delete(1.0, END)
        root.text.insert(tkinter.END, notes[e1Current])
        root.text.see(tkinter.END)
    else:
        root.text.delete(1.0, END)
        root.text.insert(tkinter.END, "Not a Keyword")
    root.text.see(tkinter.END)

2 个答案:

答案 0 :(得分:4)

声音就像你需要在初始时将字典加载到内存中,并像普通字典一样使用它。

我假设你的字典是字符串的标准python字典,所以我建议使用python json lib。

最简单的方法是使用以下内容将字典作为json导出一次到文件:

with open(filename, 'w') as fp:
    json.dump(dictionary, fp)

然后使用以下命令更改代码以在初始时加载dict:

with open(filename) as fp:
    dictionary = json.load(fp)

或者,如果您的数据比文本更复杂,您可以使用python shelve,它是一个持久的,类似字典的对象,您可以将任何pickle能力对象传递给它。请注意,搁置有其缺点,因此请阅读附加的文档。

答案 1 :(得分:0)

sqlitedict是一个在后台使用sqlite提供持久字典的项目。您可以像普通字典一样使用它,例如通过为其分配任意(可选择的)对象。

如果从字典中访问元素,则只从磁盘加载您请求的值。