Python之pickle模块使用
在Python开发中,如果需要保存Python对象状态,类似于PHP中serialize操作,该怎么办?Python提供了pickle模块,支持数据序列化和反序列化。
# 主要方法
- dumps(obj): 对象序列表
- loads(str): 字符串反序列化对象
# 代码测试
# encoding:utf8
# 序列化和反序列化
import logging
logging.basicConfig(level = logging.DEBUG,format = '%(levelname)s - %(message)s')
# logger从来不直接实例化,经常通过logging模块级方法(Module-Level Function)logging.getLogger(name)来获得
logger = logging.getLogger(__name__)
import pickle
data = {
'name':'gitlib'
}
# 查看序列化的字符串
p_str = pickle.dumps(data)
logger.debug(p_str)
# 序列化的字符串转换成对象
data = pickle.loads(p_str)
logger.debug(data['name'])
with open('pickle/main.pkl', 'w') as f:
# 将对象数据写入文件,该文件数据只有python可以识别,可用于对象序列化/反序列号
pickle.dump(data, f)
with open('pickle/main.pkl', 'r') as f:
# 读取序列化文件,导出对象
_data = pickle.load(f)
logger.debug(_data['name'])
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
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
输出结果:
DEBUG - (dp0
S'name'
p1
S'gitlib'
p2
s.
DEBUG - gitlib
DEBUG - gitlib
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
日常开发中,可以通过序列化对象保存到文件中进行持久化。
上次更新: 2022/12/01, 11:09:34