json模块
用于字符串和python数据类型间进行转换,提供了四个功能:dumps、dump、loads、load
import json
#dumps 将Python基本数据类型转换为字符串形式
li=[1,3,5,"fe"]
result=json.dumps(li)
print(result,type(result)) #str
#loads 将字符串形式转换为Python基本数据类型
result2=json.loads(result)
print(result2,type(result2)) #列表类型
#dump 将Python基本数据类型转换为字符串形式,并且写入指定文件
json.dump(li,open('json_li','w',encoding='utf-8'))
#load 将指定文件中的字符串形式转换为Python基本数据类型
l2=json.load(open("json_li",'r',encoding='utf-8'))
pickle模块
用于python特有的类型 和 python的数据类型间进行转换,也同样提供了四个功能:dumps、dump、loads、load
- json 只能处理基本数据类型(如元组、列表、字典),更适合跨语言。
- pickle 对python所有类型做序列化操作,仅适用于Python,版本不同也可能出错。
import pickle
li=["fe",2,6]
# 将数据通过特殊的形式转换为只有Python语言认识的字符串(byte类)
result=pickle.dumps(li)
print(result,type(result)) #b'\x80\x03]q\x00(X\x02\x00\x00\x00feq\x01K\x02K\x06e.' <class 'bytes'>
# 将只有Python语言认识的字符串转换为数据
res=pickle.loads(result)
print(res,type(res)) #['fe', 2, 6] <class 'list'>
#将数据通过特殊的形式转换为只有Python语言认识的字符串,并写入文件
pickle.dump(li,open('pickle_li','wb'))
#将文件中只有Python语言认识的字符串转换为数据
res=pickle.load(open('pickle_li','rb'))
shelve模块
shelve模块是一个简单的k,v将内存数据通过文件持久化的模块(和字典类似),可以持久化任何pickle可支持的python数据格式
#序列化
import shelve
def stu_data(name,age):
print("register stu",name,age)
name=["alex","rain","test"]
info={"name":"alex","age":22}
d=shelve.open('shelve_test')
print(type(d)) #类
d["test"]=name
d["info"]=info
d["func"]=stu_data
d.close()
#反序列化
import shelve
def stu_data():
print("hello")
s=shelve.open('shelve_test')
print(s["test"])
print(s["info"])
s["func"]()
结果:
['alex', 'rain', 'test']
{'name': 'alex', 'age': 22}
hello