博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
序列化
阅读量:4709 次
发布时间:2019-06-10

本文共 1177 字,大约阅读时间需要 3 分钟。

 序列化:

  把对象或变量从内存中编程可存储或传输的过程叫做序列化

 反序列化:

  把变量内容从序列化的对象重新读到内存中称之为反序列化

 

把一个对象(字典、列表、函数等)写入到一个文件的动作就叫做序列化,但直接写入就报如下错误:

1 dic={
"name":"Adair","age":"18"}2 3 f=open("serialization",'w')4 f.write(dic)5 f.close() TypeError: write() argument must be str, not dict #文件写入时必须是字符串,不能是字典

 

神不神奇~  不过,不打紧,python封装了json模块专门解决这个神奇。

json:

  与xml协议一样,是各个语言之间通信的桥梁

  json 序列化:

1 import json2 3 dic={
"name":"Adair","age":"18"}4 f=open("Json_Dump",'w')5 Json_Dump=json.dumps(dic)6 f.write(Json_Dump)7 f.close()

 

  还有一种简单的方法:

1 import json2 dic={
"name":"Adair","age":"18"}3 f=open("Json_Dump",'w')4 json.dump(dic,f)

 

  json反序列化:

1 import json2 3 f=open("Json_Dump",'r')4 print(json.loads(f.read())["name"])5 f.close()

 

  他也有一种简单的写法,开不开心:

1 f=open("Json_Dump",'r')2 print(json.load(f)["name"])3 f.close()

 

  json的缺点就是不能序列化函数,不过一般也不会序列化函数,顺带记下吧:

pickle:

1 import pickle2 def Printf():3     print("hello Adair")4 f=open("Pickle",'wb')5 pickle.dump(Printf,f)
1 import pickle2 def Printf():3     print("hello Adair")4 f=open("Pickle",'rb')5 pickle.load(f)()

 

     写入读入时需要使用二进制(wb)的方式写入,pickle的方式更json一样,唯一的区别就是json序列化后内容可以肉眼可以识别,而pickle是以二进制的方式写入的,肉眼不能识别。

 

转载于:https://www.cnblogs.com/Adairye/p/9297457.html

你可能感兴趣的文章
js 尺寸和位置 笔记
查看>>
实现移动端轮播图
查看>>
架设自己的SMTP服务器
查看>>
利用__index和__newindex实现默认值表、监控表、只读表
查看>>
windows下安装MySQL
查看>>
urllib 库的基本使用
查看>>
socket.io使用纪实
查看>>
Java基础知识总结(三)
查看>>
windows 下配置ndk环境,无需cygwin
查看>>
flash基本操作
查看>>
工厂模式
查看>>
ctags 寻找方法定义处
查看>>
Laravel 5.2 教程 - 邮件
查看>>
SQL server 数据库——数学函数、字符串函数、转换函数、时间日期函数
查看>>
[再寄小读者之数学篇](2014-11-14 矩阵的应用: 有限几何)
查看>>
[Everyday Mathematics]20150218
查看>>
单链表的翻转,插入,删除,遍历操作
查看>>
Helm介绍
查看>>
重提基数排序
查看>>
【开源项目】扫雷
查看>>