0

所以,我还在学习如何使用泡菜,并且对它的了解有限。这可能是一个初学者的问题......我创建了这个占位符类:

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 但我不明白我得到的结果,而且我见过人们使用 pandas 但我什么都不知道。当我查找它时,我真的无法理解解决方案是什么,我该怎么办?

4

1 回答 1

0

我建议您将 a 转储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以分别访问每个对象。

与 using 的情况一样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)
于 2021-10-27T10:52:46.097 回答