我是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文件是否存在的代码是什么代码?
如果您能提供帮助,请保持简单,因为我的知识有限。
答案 0 :(得分:0)
之所以发生这种情况,是因为您的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。