简介
Python
的序列化和反序列化是将一个类对象向字节流转化从而停止存储和传输, 然后运用的时分再将字节流转化回原始的对象的一个过程, 这个和其他言语的序列化与反序列化其实都差不多.
Python
中序列化普通有两种方式: pickle
模块和json
模块, 前者是Python
特有的格式, 后者是json
通用的格式.
相较于PHP
反序列化灵敏多样的应用方式, 例如POP
链结构, Phar
反序列化, 原生类反序列化以及字符逃逸等. Python
相对而言没有PHP
那么灵敏, 关于反序列化破绽主要触及这么几个概念: pickle
, pvm
, __reduce__
魔术办法. 本文主要来看看pickle
模块的反序列化破绽问题.
Pickle
简介
Pickle
能够用于Python
特有的类型和Python
的数据类型间停止转换(一切Python
数据类型).
Python
提供两个模块来完成序列化: cPickle
和pickle
. 这两个模块功用是一样的, 区别在于cPickle
是C
言语写的, 速度快; pickle
是纯Python
写的, 速度慢. 在Python3
中曾经没有cPickle
模块. pickle
有如下四种操作办法:
函数 | 阐明 |
---|---|
dump | 对象反序列化到文件对象并存入文件 |
dumps | 对象反序列化为 bytes 对象 |
load | 对象反序列化并从文件中读取数据 |
loads | 从 bytes 对象反序列化 |
简单运用
序列化操作
- 代码
“`python
import pickle
class Demo():
def init(self, name=’h3rmesk1t’):
self.name = name
print(pickle.dumps(Demo()))
- Python3
```python
b'\x80\x04\x95/\x00\x00\x00\x00\x00\x00\x00\x8c\x08__main__\x94\x8c\x04Demo\x94\x93\x94)\x81\x94}\x94\x8c\x04name\x94\x8c\th3rmesk1t\x94sb.'
- Python2
(i__main__ Demo p0 (dp1 S'name' p2 S'h3rmesk1t' p3 sb.
感谢您的来访,获取更多精彩文章请收藏本站。
![](https://www.gyzsq.com/wp-content/uploads/2022/07/9259adea4619.gif)
© 版权声明
本站网络名称:
孤勇者社区
本站永久网址:
https://www.gyzsq.com
网站侵权说明:
本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长QQ324470778删除处理。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
1 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
2 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
3 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新。
THE END
喜欢就支持一下吧
相关推荐
评论 抢沙发
![头像](/wp-content/themes/zibll/img/avatar-default.png)
欢迎您留下宝贵的见解!