一、相关概念
序列化:程序运行过程中变量中的数据存储或传输过程,称为序列化。
反序列化:反之,将序列化的内容读取到变量中,称为反序列化 。
二、相关模块和相关函数
1、pickle模块:
(1)dumps()函数:序列化,将变量中的数据(字符串类型)以二进制形式(“wb”)保存在文件中。
(2)loads()函数:反序列化,将保存好的二进制文件的内容(“rb”)读取到变量中。
2、shelve模块:
shelve.open(filename, flag=’c’, protocol=None, writeback=False)
shelve对象,类似于Python中的字典,有keys(),values(),items(),而且键必须是字符类型。
#定义类Student,给类添加 __init__:当前对象成员初始化,save():将当前对象保存到文件,read():读取刚才写入的文件的内容 import pickle class Student(object): (self是当前类的对象) def __init__(self,no,name,course,score): #初始化方法,当前对象成员的初始化 self.no=no self.name=name self.course=course self.score=score self.fileName=str(self.no)+"_pickle.txt" def save(self): #把Student类的对象二进制流写入文件 with open(self.fileName,"wb") as fw: (with管理资源,无需关闭) pickle.dump(self,fw) def read(self): #读取文件,并显示内容 with open(self.fileName,"rb") as fr: (r是read,b是以二进制流的方式写入) return pickle.load(fr) #当时写入的是什么,读取的时候返回就是什么,返回就是一个Student类的对象 def __str__(self):特殊函数 当被直接打印或使用时被调用 return "no:{},name:{},course:{},score:{}".format(self.no,self.name,self.course,self.score) if __name__=="__main__": no=input("no:") name=input("name:") course=input("course:") score=input("score:") s1=Student(no,name,course,score) s1.save() print(s1.read()) #返回的就是当前对象
readlines()返回列表