我想从腌制的dat文件中加载字典,但是问题是我第一次尝试将其加载时,腌制的字典不存在

PythonNewb

我是GCSE学生,并且遇到了一个问题,要求我将学生姓名和考试成绩保存到文件中,以便以后进行检索和操作。

我决定将数据存储在字典中,然后根据需要进行腌制和检索。我知道如何腌制字典并检索以前腌制的字典。

我的问题仅在第一次运行程序时出现,因为dat文件尚未创建。

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

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

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

Traceback (most recent call last):
  File "C:\Python34\Latest_Version.py", line 61, in <module>
    class1 = pickle.load(f)
EOFError: Ran out of input

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

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

如果您可以提供帮助,请保持简单,因为我的知识有限。

爪子

发生这种情况的原因是,您的泡菜文件中没有数据。您需要运行检查以查看是否有要加载的数据。因此,您可以将代码放入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,转储空数据。因此,下次进入时,它将成功加载,您可以写入数据,然后转储泡菜。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

Related 相关文章

热门标签

归档