Python序列化——pickle模块
来源:互联网 发布:怎么做数据透视表 编辑:程序博客网 时间:2024/05/22 02:01
序列化——pickle模块
在程序运行的过程中,所有的变量都是在内存中,变量可以随时修改,但若修改的变量没有存储到磁盘上,一旦程序结束,变量所占用的内存就被操作系统全部回收;因此,下次重新运行程序时,修改的变量又会被还原成初始化状态。
所谓的序列化,就是把变量从内存中变成可存储或传输的过程;序列化之后,序列化后的内容会被写入磁盘,或者通过网络传输到别的机器上。反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化。在Python中我们称它们为:pickling和unpickling。
#===========================================================#新建一个.txt文件,存储位置:E:/orig_data/test.txtimport picklefile = open("E:/orig_data/test.txt",'wb')data = dict(name = 'Mickle', age = 25, score = 90)pickle.dump(data, file)file.close()#============================================================
运行上述代码,然后打开得到的test.txt文件,结果是这样的:
见鬼了,咱明明保存的是一个dict文本,怎么变成变成一堆乱码,想知道为什么?这些其实都是Python保存的对象内部信息,只是当写入test文件后的内容咱看不懂而已,我们可以通过反序列化,来查看写入的内容:
#===========================================================#新建一个.txt文件,存储位置:E:/orig_data/test.txtimport picklefile = open("E:/orig_data/test.txt",'rb')data = pickle.load(file)file.close()print(data)#============================================================结果为:
变量的内容又回来了!但需要注意的是:此时的变量和原来的变量是完全不相干的对象,只是内容相同而已。
Pickle 的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于 Python,并且可能不同版本的 Python 彼此都不兼容。那么问题来了,如果我们要在不同的编程语言之间传递对象呢?那该怎么办?
标准序列化——JSON模块
不同的编程语言之间传递对象,就必须把对象序列化为标准格式,如 XML,但更好的方法是序列化为 JSON,因为 JSON 表示出来就是一个字符串,不仅读取速度快,符合Web标准,而且能被所有语言读取,也可方便地存储到磁盘或者通过网络传输。
#===========================================================#新建一个.txt文件,存储位置:E:/orig_data/test.txtimport jsonfile = open("E:/orig_data/test.txt",'w')data = dict(name = 'Mickle', age = 25, score = 90)json.dumps(data, file)file.close()#============================================================
利用JSON序列化,只需将程序中的pickle换成json。需要注意:dumps()方法返回就是一个str,因此在file中读写模式不能写成‘wb',只能改为’w'。
查看test文件的保存的结果:
保存的结果一目了然,当然我们也可像pickle一样通过JSON反序列化为Python对象,利用load()或loads()方法。
由于 JSON 标准规定 JSON 编码是 UTF-8,所以我们总是能正确地在Python 的 str 与 JSON 的字符串之间转换。
- Python序列化——pickle模块
- Python序列化模块pickle
- Python pickle序列化模块
- python pickle模块 序列化
- Python:pickle模块(序列化)
- python序列化模块json和pickle
- pickle, cPickle 模块:序列化 Python 对象
- python 中的pickle数据序列化模块
- python序列化存储模块:Pickle
- python序列化pickle
- python pickle模块序列化反序列化---存储对象
- Python中的序列化以及pickle和json模块介绍
- pickle和cPickle——python对象序列化
- Python 基础—— pickle 模块
- Python标准模块——pickle
- python学习——pickle模块详解
- Python--序列化之pickle
- Python 3.6 Pickle 序列化
- 基于Android官方AsyncListUtil优化改进RecyclerView分页加载机制(一)
- 填坑Tensorflow Object Dection API
- 22 简体形
- Vue2.0史上最全入坑教程(上)—— 搭建Vue脚手架(vue-cli)
- C/C++语言为什么要有宏?
- Python序列化——pickle模块
- spring boot完美集成dwr3.0.2-RELEASE
- 解析.properties文件
- ArcGIS Server 站点架构-Web Adaptor
- Eclipse Console 加大显示的行数,禁止弹出
- Nodo登陆注册表单,数据库md5加密
- 51Nod 1024 矩阵中不重复的元素
- spring-data-redis 使用pipeline批量设置过期时间的bug
- ubuntu下环境变量详解 bashrc, profile, environment