Python对象序列化

对象就是抽象化的概念,比如列表、字典、元组都是对象,而对象序列化就是将对象持久化操作,把这种抽象化的概念持久化在磁盘上,将对象转换为字节数据和字符数据

Python提供了pickle模块和json模块序列化对象

pickle模块

pickle模块可以将列表、字典、集合、类等序列化,将其转换为字节数据

dumps():将对象序列化为字节数据

import pickle
a = [1,2,3,4]
date = pickle.dumps(a)
print(date)
f = open("a.dat","wb")
f.write(date)
f.close()

b'\x80\x04\x95\r\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03K\x04e.'

loads():将字节数据反序列化为对象

import pickle
f = open("a.dat","rb")
show = f.read()
show = pickle.loads(show)
print(show)

[1, 2, 3, 4]

dump():将对象序列化为字节数据并且保存在文件中

import pickle
a = [1,2,3]
x = pickle.dump(a,open("a.dat","wb"))
f = open("a.dat","rb")
print(f.read())

b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00]\x94(K\x01K\x02K\x03e.'

load():自动读取文件并且将字节数据反序列化为对象

import pickle
x = pickle.load(open("a.dat","rb"))
print(x)

[1, 2, 3]

json模块

json模块可以将列表、字典、集合、类等序列化,将其转换为字符数据

注意:json一般是用来操作字典对象

dumps():将对象序列化为字符数据

import json
a = {"name":"张三","age":18}
x = json.dumps(a)
f = open("a.txt","w")
f.write(x)
print(x)

{"name": "\u5f20\u4e09", "age": 18}

loads():将字符数据反序列化为对象

import json
f = open("a.txt","r")
x = f.read()
x = json.loads(x)
print(x)

{'name': '张三', 'age': 18}

dump():将对象序列化为字符数据并且保存在文件中

import json
a = {"name":"李四","age":18}
x = json.dump(a,open("a.txt","w"))
f = open("a.txt","r")
print(f.read())

{"name": "\u674e\u56db", "age": 18}

load():自动读取文件并且将字符数据反序列化为对象

import json
x = json.load(open("a.txt","r"))
print(x)

{'name': '李四', 'age': 18}

总结:dump和load都会比dumps和loads便捷使用

你可能感兴趣的:(python,python,开发语言)