我有我的程序设置,所以它需要用户输入并从中创建一个对象。然后,对象存储在字典中,而字典又被腌制为.pkl文件。写入此文件的任何新对象都使用以下代码:
def save_object(obj, filename):
with open(filename, 'ab') as output:
pickle.dump(obj, output, -1)
现在,当我重新打开程序时,我需要加载我的字典的全部内容,我尝试用它来做:
self.load_file = open("Obj_file.pkl", 'rb+')
self.employee_dict = pickle.load(self.load_file)
print self.employee_dict
现在从我的理解,这将只加载前两个对象,这实际上是我看到代码运行时的结果。它只是打开前两个对象。我如何加载整个字典,这似乎是相当困难的,因为我已经完成了研究。此外,它对我的程序至关重要,我使用字典,因为对象将从中删除,我需要在执行此类过程后保持相同的顺序。
答案 0 :(得分:2)
您在追加模式中打开了pickle文件;这会在文件的末尾写一个 new pickle记录,让你的第一个版本开始。
然后,当您重新打开程序时从文件中读取pickle时,您只能阅读第一个版本。
根据您的需要,在 write 模式下打开文件要简单得多,每次都用新版本的词典替换所有内容:
def save_object(obj, filename):
with open(filename, 'wb') as output:
pickle.dump(obj, output, -1)