序列化

 序列化:

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

 反序列化:

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

 

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

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 json
2 
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 json
2 dic={"name":"Adair","age":"18"}
3 f=open("Json_Dump",'w')
4 json.dump(dic,f)

 

  json反序列化:

1 import json
2 
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 pickle
2 def Printf():
3     print("hello Adair")
4 f=open("Pickle",'wb')
5 pickle.dump(Printf,f)
1 import pickle
2 def Printf():
3     print("hello Adair")
4 f=open("Pickle",'rb')
5 pickle.load(f)()

 

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

 

posted @ 2018-07-12 00:47  叶小黑  阅读(137)  评论(0)    收藏  举报