类似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 序列化和反序列化的更多相关文章

  1. Python3 json、pickle序列化与反序列化

    注意:可以dumps多次,loads只能一次,一般我们只dumps一次,loads一次,多个版本就写入多个文件 一.json序列化与反序列化: 支持各种语言数据交互,但只能处理字典,列表,集合等简单的 ...

  2. Python的json and pickle序列化

    json序列化和json反序列化 #!/usr/bin/env python3 # -*- coding: utf-8 -*- __author__ = '人生入戏' import json a = ...

  3. json and pickle 序列化

    前言 文件只能存储字符串.二进制,若把内存的数据对象存到硬盘   从硬盘里读取数据,里面不止是字符串的类型,因此用到了json and pickle 序列化 json序列化 作用:用于不同语言进行的数 ...

  4. (1)json和pickle序列化模块

    json 和pickle 模块 json和pickle模块下都有4个功能 dumps  <---> loads  (序列化 <--->反序列化) dump <---> ...

  5. (转)python常用模块(模块和包的解释,time模块,sys模块,random模块,os模块,json和pickle序列化模块)

    阅读目录 1.1.1导入模块 1.1.2__name__ 1.1模块 什么是模块: 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代 ...

  6. .net MVC 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错,字符串的长度超过了为 maxJsonLength 属性设置的值

    在.net mvc的controller中,方法返回JsonResult,一般我们这么写: [HttpPost] public JsonResult QueryFeature(string url, ...

  7. 使用JSON JavaScriptSerializer 进行序列化或反序列化时出错。字符串的长度超过了为 maxJsonLength属性

    "/"应用程序中的服务器错误.使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值. ...

  8. 对 JSON 数据进行序列化和反序列化

    如何:对 JSON 数据进行序列化和反序列化 2017/03/30 作者 JSON(JavaScript 对象符号)是一种高效的数据编码格式,可用于在客户端浏览器和支持 AJAX 的 Web 服务之间 ...

  9. 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错

    如题 报错提示: 使用 JSON JavaScriptSerializer 进行序列化或反序列化时出错.字符串的长度超过了为 maxJsonLength 属性设置的值.","Sta ...

随机推荐

  1. 20165332 预备作业三 Linux安装及命令入门

    Linux安装及命令入门 一.安装Linux操作系统 由于做的比较晚,结合大多数同学的经验和娄老师的<基于VirtualBox虚拟机安装Ubuntu图文教程>,整个安装过程还算顺利,唯一遇 ...

  2. jQuery: Redirect to other URL

    <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> ...

  3. mono developer 无法启动 可以试试如下插件包.

    http://download.xamarin.com/GTKforWindows/Windows/gtk-sharp-2.12.22.msi 我以前装的旧版unity 再装了新的版本以后 mono ...

  4. 程序try-catch的绝对健壮性之嵌套

    写程序的过程中,我们对try-catch在熟悉不过了,捕获异常进行处理,以保证程序的健壮性. 今日突发一想,如果我们catch中的代码异常了怎么办?我们做以下一种假设 static void Main ...

  5. windows 下多线程

    unsigned uiThread2ID; HANDLE handle = (HANDLE)_beginthreadex(NULL, , ThreadUploadFun, NULL, CREATE_S ...

  6. 人生苦短之我用Python篇(深浅拷贝、常用模块、内置函数)

    深浅拷贝 有时候,尤其是当你在处理可变对象时,你可能想要复制一个对象,然后对其做出一些改变而不希望影响原来的对象.这就是Python的copy所发挥作用的地方. 定义了当对你的类的实例调用copy.c ...

  7. 循环神经网络RNN模型和长短时记忆系统LSTM

    传统DNN或者CNN无法对时间序列上的变化进行建模,即当前的预测只跟当前的输入样本相关,无法建立在时间或者先后顺序上出现在当前样本之前或者之后的样本之间的联系.实际的很多场景中,样本出现的时间顺序非常 ...

  8. SITP & Raspberry Pi

    系统安装 系统选择树莓派论坛提供的下载地址 Download 我选择了其中的SSH-2017-01-11-raspbian-jessie.zip[良心推荐] 选择一个大于8G的内存卡,利用 Win32 ...

  9. 如何快速上手.net下单元测试工具NUnit?

    NUnit基本使用 准备知识: 读此博文需要了解单元测试基本概念及NUnit的的安装. 传送门:单元测试之道(使用NUnit) 1.常见的错误 当学习一个新东西时,先学习错误,是最快的方式. 1.1 ...

  10. ACM ICPC 2018 青岛赛区 部分金牌题题解(K,L,I,G)

     目录: K Airdrop I Soldier Game L Sub-cycle Graph G Repair the Artwork ———————————————————— ps:楼主脑残有点严 ...