json and pickle 序列化和反序列化
类似vmware虚拟机里的虚拟主机挂起操作,把当前内存拷贝成文件保存。
上面的这种操作就叫内存序列化:如下图:
有序列化就有反序列化,要把文件里的东西再恢复成字典:eval把字符串变成字典。
但是上面的这种方法很low,用的方法很复杂,我们要用jason的方法:下面是序列化的方法:json.dumps()
反序列化如下图:json.loads()
json的主要作用是不用语言的数据交互,所以json不支持复杂的数据类型。
但是我们就想处理复杂的数据类型,怎么办呢?我们可以用pickle
import pickle,但是注意pickle处理的全是bytes数据类型,不能用字符串。其余的写法跟json一模一样。
序列:pickle.dumps()
反序列:pickle.loads()
导入pickle模块
文件test.text变成二进制文件:
反序列:
虽然反序列是成功了,但是在新的这个脚本里,并没有sayhi这个函数,所以你打印,肯定报错。我们必须做如下处理:
把序列化里的sayhi()这个函数copy过来:
这个时候就不报错了。
我们也可以给字典[func]进行取值。
序列化程序如下:
反序列化程序如下:
但是要注意,pickle只限于PYTHON里使用,跟java不能通用,但是json是可以在python和java里通用的。
其实pickle也有其他的方法,dump和load,见如下:
下面的写法一模一样
pickle.dump(info,f) ============f.write( pickle.dumps( info) )
data = pickle.load(f) =============data = pickle.loads(f.read())
序列化:
反序列化程序如下:
如果这个时候,我们可能存在dumps两次的情况:
我们来看下反序列化:反复报错!
在py2里是可以dump好几次,然后load好几次,(而且先dump进去的,先load出来,不过这样很容易出错),但是在py3里是不允许了。你记住dump一次,load一次。
如果你真想dump好几个,那么就dump成好几个文件!!!
json and pickle 序列化和反序列化的更多相关文章
- Python3 json、pickle序列化与反序列化
注意:可以dumps多次,loads只能一次,一般我们只dumps一次,loads一次,多个版本就写入多个文件 一.json序列化与反序列化: 支持各种语言数据交互,但只能处理字典,列表,集合等简单的 ...
- Python的json and pickle序列化
json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...
- json and pickle 序列化
前言 文件只能存储字符串.二进制,若把内存的数据对象存到硬盘 从硬盘里读取数据,里面不止是字符串的类型,因此用到了json and pickle 序列化 json序列化 作用:用于不同语言进行的数 ...
- (1)json和pickle序列化模块
json 和pickle 模块 json和pickle模块下都有4个功能 dumps <---> loads (序列化 <--->反序列化) dump <---> ...
- (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)
阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...
- .net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值
在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string url, ...
- 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性
"/"应用程序中的服务器错误.使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. ...
- 对 JSON 数据进行序列化和反序列化
如何:对 JSON 数据进行序列化和反序列化 2017/03/30 作者 JSON(JavaScript 对象符号)是一种高效的数据编码格式,可用于在客户端浏览器和支持 AJAX 的 Web 服务之间 ...
- 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错
如题 报错提示: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值.","Sta ...
随机推荐
- LeetCode第[49]题(Java):Group Anagrams
题目:同字符分组 难度:Medium 题目内容: Given an array of strings, group anagrams together. 翻译:给定一组字符串数组,按相同字符组成的字符 ...
- spring mvc: 静态资源/文件配置
静态文件不用再放web-info 下面了,放在webapp/ 下面就行了(静态文件放web-inf下你在jsp都无法引用~ 注意一下所有js.css包括报表文件~ 配置文件等等等~ 不要放在web ...
- MailJobUtils 发送邮件
import java.util.List; import java.util.Properties; import javax.annotation.Resource; import javax.m ...
- File工具类
package cn.itcast.bos.utils; import java.io.IOException; import java.net.URLEncoder; import sun.misc ...
- 漂亮的Html5网站
http://www.mrdoob.com/projects/chromeexperiments/ball-pool/
- spring 多数据源动态切换
理解spring动态切换数据源,需要对spring具有一定的了解 工作中经常遇到读写分离,数据源切换的问题,那么以下是本作者实际工作中编写的代码 与大家分享一下! 1.定义注解 DataSource ...
- .NET学习路线之我见(转)
这是我的第一篇博客,所以,我想写个大的,至少这个话题是比较大的. 在文章的开头,首先声明,这篇文章仅代表我个人的想法,并且只适合.NET的初学者,如果你已经有两年以上的开发经验,我劝你还是别看了,省得 ...
- main(argc,argv[])
每个C语言程序都必须有一个称为main()的函数,作为程序启动的起点.当执行程序时,命令行参数(command-line argument)(由shell逐一解析)通过两个入参提供给main()函数. ...
- hihocoder-1483区间价值 (二分+尺取法)
题目链接: 区间价值 给定n个数A1...An,小Ho想了解AL..AR中有多少对元素值相同.小Ho把这个数目定义为区间[L,R]的价值,用v[L,R]表示. 例如1 1 1 2 2这五个数所组成的区 ...
- Sphinx 匹配模式
所谓匹配模式就是用户如何根据关键字在索引库中查找相关的记录. SPH_MATCH_ALL, 匹配所有查询分词(默认模式); 如“手机配件”,不匹配 “我有一部手机”,但可以匹配 “手机坏了,需要找配件 ...