json和pickle序列化和反序列化

  json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有程序之间的交互,json将取代XML,由于XML格式稍微比较复杂。现在程序之间的交互都是用json来进行文件信息的交互。

  在使用json序列化和反序列化的时候,dump一次,就要load一次,不能操作。

  

  json序列化的过程,就是写入文件中,让另外一个编程语言进行调用:

  import json

  info = {"alex":"sb","test":"hard"}

  with open("file","w") as f:
    f.write(json.dumps(info))

  上述代码使用json将info字典信息写入到一个文件中,文件中只能存储字符串格式的信息,或者二进制文件的信息,不能存放数字等信息,放入文件中的信息都是字符串类型的,这点一定要注意.

  json反序列化的过程:

  import json

  '''反序列化起始就是把dump进去的信息进行提取,以实现不同编程语言的交互'''

  with open("file","r") as f:
    data = json.loads(f.read())
    print(data)
    print(type(data))
    print(data["alex"])  

  上面代码,将使用json格式存入的信息读取出来,如下所示:

  {'test': 'hard', 'alex': 'sb'}
  <class 'dict'>
  sb
  上述代码实现了将字符串信息读取问字典的功能,其实,序列化和反序列化就是将原来的格式先转化为字符串,然后在读取出来的过程,以便能够实现交互.

  我们也可以使用其他方式进行序列化和反序列化,我们知道,有一个函数eval(),能够实现把字符串信息转化为原本样式,如下:

  info = [11,22,33,65,33]

  with open("test.text","w") as f:
    f.write(str(info)) #使用wirte()只能向文件中写入字符串格式的信息,不能写入其他类型的信息

  with open("test.text","r") as f_obj:
    data = f_obj.read()

    data = eval(data)
    print(type(data))
    print(data)  

  程序运行如下:

  <class 'list'>
  [11, 22, 33, 65, 33]
  上述过程中,我们利用python自带的eval()函数也实现了序列化和反序列化的过程,但是由于序列化和反序列化是在同一个程序中实现的,在其他程序中有没有eval()是不确定的,但是json支持所有的编程语言,所以现在一般都使用json实现不同编程语言之间的信息交互.

  dump和load也是实现上面dumps和loads的功能,只是实现的方式不一样而言,语法稍微有一些区别,如下:

  dump序列化:

  import json

  info = {"alex":"sb","test":"hard"}

  with open("file","w") as f:
    json.dump(info,f)

  load()反序列化:

  import json

  '''反序列化起始就是把dump进去的信息进行提取,以实现不同编程语言的交互'''

  with open("file","r") as f:
    data = json.load(f)
    print(data)
    print(type(data))
    print(data["alex"])  

  上面程序实现了序列化和反序列化的功能,dump(信息,文件路径),load(文件路径),从哪个文件读取信息.

  在不同程序间实现数据的交换.

  不同程序之间的数据交换,或者是将字符串的信息转化为原有的形式;

  eval()函数的功能也很强大,能够之间将字符串形式的信息转化为原有的信息,如下:

  >>> dic = "{'alex':'sb','try':'workhard'}"
  >>> data = eval(dic)
  >>> data
  {'try': 'workhard', 'alex': 'sb'}

  程序只dump一次,load一次,不能dump多次.dumps好几个文件实现; 

【Python】python学习文件的序列化和反序列化的更多相关文章

  1. python学习day4之路文件的序列化和反序列化

    json和pickle序列化和反序列化 json是用来实现不同程序之间的文件交互,由于不同程序之间需要进行文件信息交互,由于用python写的代码可能要与其他语言写的代码进行数据传输,json支持所有 ...

  2. python进阶(3)序列化与反序列化

    序列化与反序列化 按照某种规则,把内存中的数据保存到文件中,文件是一个字节序列,所以必须要把内存数据转换成为字节序列,输出到文件,这就是序列化:反之,从文件的字节恢复到内存,就是反序列化: pytho ...

  3. .net学习之集合、foreach原理、Hashtable、Path类、File类、Directory类、文件流FileStream类、压缩流GZipStream、拷贝大文件、序列化和反序列化

    1.集合(1)ArrayList内部存储数据的是一个object数组,创建这个类的对象的时候,这个对象里的数组的长度为0(2)调用Add方法加元素的时候,如果第一次增加元神,就会将数组的长度变为4往里 ...

  4. java 打印流 递归复制子文件子文件夹 不同编码文件复制到同一文件中 序列化流反序列化流

    package com.swift.jinjie; import java.io.BufferedInputStream; import java.io.File; import java.io.Fi ...

  5. Day3 Python基础学习——文件操作、函数

    一.文件操作 1.对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过文件句柄对文件进行操作 关闭文件 #打开文件,读写文件,关闭文件 http://www.cnblogs.com/linha ...

  6. Python基础学习——文件操作、函数

    一.文件操作 文件操作链接:http://www.cnblogs.com/linhaifeng/articles/5984922.html(更多内容见此链接) 一.对文件操作流程 打开文件,得到文件句 ...

  7. Java中对文件的序列化和反序列化

    public class ObjectSaver { public static void main(String[] args) throws Exception { /*其中的 D:\\objec ...

  8. 【java学习笔记】序列化、反序列化

    序列化 是将对象的完整信息保存起来的过程(持久化).    序列化流:ObjectOutputStream 反序列化 是将对象进行还原的过程(反持久化).               反序列化流:Ob ...

  9. Java将对象写入文件读出——序列化与反序列化

    Java类中对象的序列化工作是通过ObjectOutputStream和ObjectInputStream来完成的. 写入: File aFile=new File("e:\\c.txt&q ...

随机推荐

  1. 20155227 2016-2017-2 《Java程序设计》第二周学习总结

    20155227 2016-2017-2 <Java程序设计>第二周学习总结 教材学习内容总结 本周学习的第三章内容与以前学过的C语言有很多共通的地方,学习起来还是比较快的. 主要的内容有 ...

  2. combotree -下拉框树异步加载

    问题: 下拉树数据比较多时,全加载会产生页面延迟,需要实现异步加载 方案: 点击事件加载:先加载部分,点击节点时再展开并追加子节点 onBeforeExpand事件:在展开树前加载,感觉这种方式比较优 ...

  3. 【MongoDB】NoSQL Manager for MongoDB 教程(基础篇)

    前段时间,学习了一下mongodb,在客户端工具方面,个人认为 NoSQL Manager for MongoDB 是体验比较好的一个,功能也较齐全.可惜在找教程的时候,发现很难找到比较详细的教程,也 ...

  4. HTML中CSS入门基础

    HTML.CSS 实用css有三种格式:内嵌:内联:外部: 分类:内联:写在标记的属性位置,优先级最高,重用性最差内嵌:写在页面的head中,优先级第二,重用性一般外部:写在一个以css结尾的文件中, ...

  5. Maven学习(十八)-----Maven依赖管理

    其中一个Maven的核心特征是依赖管理.管理依赖关系变得困难的任务一旦我们处理多模块项目(包含数百个模块/子项目). Maven提供了一个高程度的控制来管理这样的场景. 传递依赖发现 这是很通常情况下 ...

  6. AWS探索及创建一个aws EC2实例

    一.AWS登陆 1.百度搜索aws,或者浏览器输入:http://aws.amazon.com 2.输入账户及密码登陆(注册流程按照提示走即可) 二.创建EC2实例(相当于阿里云的ecs) 1.找到E ...

  7. Openwrt之移动硬盘ext3/ext4格式化工具

    在给openwrt挂载移动硬盘的时候,最好是ext3/ext4方式,但在windows下苦于无法找到合适的工具进行格式化. 踅摸了半天,终于找到了它:MiniTool Partion  Wizard ...

  8. flexbox的应用

    2009年,display: box 就已经出现,但是直到IE11的发布,全部的主流浏览器才统一支持新的用法display: flex. 这里只说应用,浏览器的兼容处理会附在文章的末尾. 起步 在现代 ...

  9. java引用Arcface,实现人脸识别(demo)

    ## 开发环境准备: ###开发使用到的软件和工具: * Jdk8.mysql5.7.libarcsoft_face.dll(so).libarcsoft_face_engine.dll(so).li ...

  10. Matplotlib外观和基本配置笔记

    title: matplotlib 外观和基本配置笔记 notebook: Python tags:matplotlib --- 参考资料,如何使用matplotlib绘制出数据图形,参考另一篇mat ...