繁体   English   中英

如何加载存储在同一个 DAT 文件中的多个 python 对象?

[英]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")
  • 但我不知道如何在将 .dat 文件作为单独的对象加载后分别读取。

我尝试使用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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM