本文实例讲述了Python使用pickle模块实现序列化功能。分享给大家供大家参考,具体如下:
Python内置的pickle模块能够将Python对象序列成字节流,也可以把字节流反序列成对象。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
import pickle class Student: def __init__( self , name, age): self .name = name self .age = age def say( self ): print ( "I am" , self .name) >>> t = Student( 'Tom' , 23 ) >>> t.say() I am Tom >>> >>> save_path = './tom_msg' >>> with open (save_path, 'wb' ) as f: # 字节流写入 ... pickle.dump(t, f) # 序列化数据保存在文件中 >>> >>> with open (save_path, 'rb' ) as f: # 字节流读出 ... after_t = pickle.load(f) # 读取文件信息反序列化成对象 ... >>> after_t.__dict__ { 'name' : 'Tom' , 'age' : 23 } >>> after_t.say() I am Tom >>> >>> >>> l = Student( 'Lisa' , 23 ) >>> serialized = pickle.dumps(l) >>> serialized b '\x80\x03c__main__\nStudent\nq\x00)\x81q\x01}q\x02(X\x04\x00\x00\x00nameq\x03X\x04\x00\x00\x00Lisaq\x04X\x03\x00\x00\x00ageq\x05K\x17ub.' >>> after_l = pickle.loads(serialized) >>> after_l.say() I am Lisa >>> after_l.__dict__ { 'name' : 'Lisa' , 'age' : 23 |
如果比较复杂的操作(对象属性更变,添加删除),pickle
模块可能会出问题,那时候应该结合copyreg
来使用
希望本文所述对大家Python程序设计有所帮助。
原文链接:https://blog.csdn.net/u011019726/article/details/78685116