Pickle模块的使用
- pickle提供了一个简单的持久化功能,可以将对象以文件的形式存放到磁盘上,此模块只能在Python中使用,且Python中所有数据类型【list,string,tuple,dict,set,对象】都可以使用pickle进行序列化和反序列化
- pickle.dump(obj,file,protocol = None),其中obj:将要封装的对象;file:obj将要写入的文件对象【注意:必须以二进制可写形式打开,“wb”】;protocol:可选参数,表示告知pickle的协议,支持的协议有0,1,2,3,默认协议为3
import pickle class Person(object): def __init__(self,name,age): self.name = name self.age = age def show(self): print("name:%s age:%d" %(self.name,self.age)) p = Person("李四",10) p.show() f = open("file1.txt","wb") #类似于write的使用,文件不存在,则自动创建 pickle.dump(p,f) f.close()
- 反序列化:将本地磁盘上存储的对象读取出来
f1 = open("file1.txt","rb") #要读取的文件对象,file必须以二进制可读的形式打开,"rb" p1 = pickle.load(f1) p1.show()
注意:pickle序列化的数据,人一般无法识别
综合练习 【模拟网上购物的整套流程:注册,登录,购买,删除,结算,退出】
- 分析:模拟网上购物,需要定义5个类:商品类,用户类,购物车类,仓库类,功能类
- 商品类:需要提供商品名称,商品价格和商品剩余量
- 用户类:需要提供用户id,用户的密码,用户拥有的购物车,用户的登录状态
- 购物车类:程序最始,商品列表为空
- 仓库类:信息保存在本地磁盘,程序刚启动时把列表先存储到文件中,之后使用的时候再读出来
- 功能类:一个程序可能有很多用户,则需要将用户以字典的形式保存在本地。实现用户的注册,登录,购买,删除,结算,退出操作
""" 商品类: 商品名称 商品价格 商品剩余量 """ class Goods(object): def __init__(self,name,price,balance): self.name = name self.prince = prince self.balance = balance def __str__(self): return "[goods] name:%s prince:%d balabce:%d" %(self.name,self.price,self.balance)
""" 用户类 姓名 用户id【这个标识对于每个用户而言是唯一的]】 密码 拥有购物车 用户登录状态【默认为 False 表示没有登录】 """ class User(object): def __init__(self,name,uid,psw,shopping_car,islogin): self.name = name