json pickle shelve模块

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.' 
# 将只有Python语言认识的字符串转换为数据
res=pickle.loads(result)
print(res,type(res))        #['fe', 2, 6] 
#将数据通过特殊的形式转换为只有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

你可能感兴趣的:(json pickle shelve模块)