pickle序列化对象

如果希望透明地存储 Python 对象,而不丢失其身份和类型等信息,则需要某种形式的对象序列化:它是一个将任意复杂的对象转成对象的文本或二进制表示的过程。

同样,必须能够将对象经过序列化后的形式恢复到原有的对象。在 Python 中,这种序列化过程称为 pickle,

可以将对象 pickle 成字符串、磁盘上的文件或者任何类似于文件的对象,也可以将这些字符串、文件或任何类似于文件的对象 unpickle 成原来的对象

代码实例

import pickle
class MyPickle(object): def __init__(self,file_name):
self.file_name = file_name def dump(self,obj):
"""
序列化对象
:param obj:
:return:
"""
with open(self.file_name,'ab') as f:
pickle.dump(obj, f)
print('dump data',obj.__dict__) def loaditer(self):
"""
迭代反序列化对象
:return:
"""
f = open(self.file_name, 'rb')
while True:
try:
obj = pickle.load(f)
yield obj
except EOFError:
print('EOFError')
f.close()
print(f.closed)
break class Person:
def __init__(self,n,a):
self.name=n
self.age=a
def show(self):
print(self.name+"_"+str(self.age) ) aa = Person("aGood", 2)
bb = Person("bGood",3)
cc = Person("cGood",4) p = MyPickle('c.txt')
p.dump(aa)
p.dump(bb)
p.dump(cc) iter_obj = p.loaditer()
while True:
try:
print(next(iter_obj).__dict__)
except StopIteration:
print('stop')
break

输出结果

dump data {'name': 'aGood', 'age': 2}
dump data {'name': 'bGood', 'age': 3}
dump data {'name': 'cGood', 'age': 4}
{'name': 'aGood', 'age': 2}
{'name': 'bGood', 'age': 3}
{'name': 'cGood', 'age': 4}
EOFError
True
stop

  

最新文章

  1. 【转】2016/2017 Web 开发者路线图
  2. Maven使用第三方jar文件的两种方法
  3. IOS表情存入MYSQL数据库失败
  4. 【JSP jstl c标签】使用c:foreach 报错(警告)”test does not support runtime expressions“
  5. Oracle笔记 九、PL/SQL 游标的使用
  6. 51nod1295 XOR key
  7. 【转】在Ubuntu上下载、编译和安装Android最新源代码
  8. JAVA虚拟机简介
  9. 10.4 noip模拟试题
  10. influxdb + Grafana可视化监控平台
  11. 使用Olami SDK 语音控制一个支持HomeKit的智能家居的iOS程序
  12. 2017 ICPC/ACM 沈阳区域赛HDU6228
  13. Redis数据结构之skiplist
  14. python 3 爬取某小说网站小说,注释详细
  15. match和search的区别
  16. nlogn LIS模板
  17. Dubbo后台管理和监控中心部署
  18. CSS应用的小问题总结
  19. 团体程序设计天梯赛 L1-009. N个数求和
  20. 51nod 1962区间计数(单调栈加二分)

热门文章

  1. Python脚本语言第一行的写法
  2. tp5系统核心设计提供了一些可能会需要的钩子(位置)
  3. CAS 单点登录 服务器整合
  4. jQuery警告/确认/提示弹出对话框效果(替换传统JavaScript下的提示框)
  5. openstack查看命令的restful调用形式
  6. Java编程从头开始---老妪能解
  7. python科学计算模块NumPy
  8. Eclipse环境下如何配置tomcat,并且把项目部署到Tomcat服务器上
  9. Grand Central Dispatch
  10. _编程语言_C_C++_数据结构_struct