我想从一个pickled dat文件加载一个字典,但问题是第一次尝试加载时,pickled字典不存在。

2024-05-15 01:52:51 发布

您现在位置:Python中文网/ 问答频道 /正文

我是一名GCSE学生,有一个问题需要我将学生姓名和考试成绩保存到一个文件中,以便以后检索和操作。在

我决定将数据存储在一个字典中,我将根据需要对其进行pickle和检索,我知道如何pickle一个字典并检索以前的pickle字典。在

我遇到的问题只发生在程序第一次运行时,因为dat文件尚未创建。在

下面的代码打开现有的Dat文件,并将最新的学生姓名和分数写入文件中保存的字典中。在

f = open("class1.dat","ab+")
class1 = pickle.load(f)
class1[Name]=Score
pickle.dump(class1,f)
f.close

问题是,一旦第一个分数被保存到Dat文件中,这个方法就起作用了,但是我在程序第一次运行时收到了这个错误消息。在

^{pr2}$

我意识到这是因为dat文件还不存在。在

什么代码会检查Dat文件是否首先存在?在

如果你能帮忙,请保持简单,因为我的知识有限。在


Tags: 文件数据代码程序字典open学生分数
1条回答
网友
1楼 · 发布于 2024-05-15 01:52:51

发生这种情况的原因是,pickle文件中没有数据可以开始。您需要运行一个检查,看看是否有数据要加载。因此,您可以在try/except中抛出代码,以检查是否可以加载数据。如果不能,请将初始数据(空数据)写入pickle文件。在

此外,请注意显式设置对文件的读写。在

import pickle

class1 = {}
try:
    class1 = pickle.load(open("my_stuff.pkl", "rb"))
    print(class1)
    class1['bob'] = 123
    pickle.dump(class1, open("my_stuff.pkl", "wb"))
except:
    pickle.dump(class1, open("my_stuff.pkl", "wb"))

因此,这里发生的是,首先声明一个空字典,然后尝试加载内容。如果失败,它将落入except,转储空数据。所以下次你进来的时候,它会成功加载,你可以写下你的数据,然后把pickle转储掉。在

相关问题 更多 >

    热门问题