[英]How do I load more than one python object stored in the same DAT file?
所以,我仍在学习如何使用泡菜,并且对它的了解有限。 这可能是一个初学者问题......我创建了这个占位符类:
class Student:
def __init__(self):
self.__name = ""
self.__regNum = 0
self.__fullTime = True
def getName(self):
return self.__name
def getRegNum(self):
return self.__regNum
def getFullTime(self):
return self.__fullTime
def setName(self,name):
self.__name = name
def setRegNum(self,num):
self.__regNum = num
def setFullTime(self,fullTime):
self.__fullTime = bool(fullTime)
我创建了两个测试学生:
student1 = Student()
student1.setName("Joe")
student1.setRegNum(2110)
student1.setFullTime(1)
student2 = Student()
student2.setName("Jess")
student2.setRegNum(5124)
student2.setFullTime(0)
dumpFile = open("student.DAT","wb")
pickle.dump(student1,dumpFile)
pickle.dump(student2,dumpFile)
dumpFile.close()
loadFile = open("student.DAT","rb")
我尝试使用with open("student.dat", 'rb') as input:
我在互联网上看到过,但我不知道它做了什么来理解为什么它不起作用。 我试过 numpy.fromfile 但我不明白我得到的结果,我见过人们使用熊猫,但我什么都不知道。 查的时候实在搞不懂解决办法是什么,怎么办?
我建议您将list of objects
转储到您的.dat
文件中,然后在加载时检索它。
dumpFile = open("student.DAT","wb")
pickle.dump([student1, student2], dumpFile)
dumpFile.close()
loadFile = open("student.DAT","rb")
data = pickle.load(loadFile) #data now contains a list of the objects
loadFile.close()
然后,您可以遍历data
以分别访问每个对象。
与使用with open
的情况一样,很容易理解。 简而言之,它确保您在使用后不必关闭文件。 例如,同样的代码可以写成:
with open("student.DAT","wb") as dumpFile:
pickle.dump([student1, student2], dumpFile)
with open("student.DAT","rb") as loadFile:
data = pickle.load(loadFile)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.