我想从腌制的 dat 文件中加载字典,但问题是我第一次尝试加载它时,腌制的字典不存在
I want to load a dictionary from a pickled dat file but the issue is that the first time I try to load it the pickled dictionary does not exist
我是一名 GCSE 学生,我遇到了一个问题,要求我将学生姓名和考试成绩保存到一个文件中,以便以后检索和操作。
我决定将数据存储在一个字典中,我将对其进行 pickle 和检索,因为 required.I 知道如何 pickle 字典和检索以前 pickled 的字典。
我遇到的问题只出现在程序第一次运行时 运行 因为 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 文件是否存在?
如果你能帮忙,请保持简单,因为我的知识有限。
发生这种情况的原因是您的 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
,转储空数据。所以下次你进来的时候,它会加载成功,你可以写你的数据,然后转储泡菜。
我是一名 GCSE 学生,我遇到了一个问题,要求我将学生姓名和考试成绩保存到一个文件中,以便以后检索和操作。
我决定将数据存储在一个字典中,我将对其进行 pickle 和检索,因为 required.I 知道如何 pickle 字典和检索以前 pickled 的字典。
我遇到的问题只出现在程序第一次运行时 运行 因为 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 文件是否存在?
如果你能帮忙,请保持简单,因为我的知识有限。
发生这种情况的原因是您的 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
,转储空数据。所以下次你进来的时候,它会加载成功,你可以写你的数据,然后转储泡菜。