Python 序列化的两个模块json&pickle

一、
json:用于字符串和Python数据类型间进行转换
pickle: 用于python特有的类型和python的数据类型间进行转换

python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None
列表,元组,字典和集合
函数,类,类的实例
二、
json提供四个功能:dumps,dump,loads,load  
pickle提供四个功能:dumps,dump,loads,load

三、
1. pickle.dump(obj, file, protocol=None,)

必填参数obj表示将要封装的对象

必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb”

可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python 3中的协议3。

2、pickle.load(file,*,fix_imports=True, encoding=”ASCII”, errors=”strict”)

必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数

pickle.dumps(obj):以字节对象形式返回封装的对象,不需要写入文件中

pickle.loads(bytes_object): 从字节对象中读取被封装的对象,并返回
#序列化
import pickle

dic = {'name': 'alan', 'age': 23, 'sex': 'girl'}

j = pickle.dumps(dic)

print(type(j))  # <class 'bytes'>

f = open('x_pickle', 'wb')  # 注意是w是写入str,wb是写入bytes,j是'bytes'
f.write(j)  #等价于pickle.dump(dic,f)
f.close()
#反序列化
import pickle

f = open('x_pickle', 'rb')

data = pickle.loads(f.read())  # 等价于data=pickle.load(f)

# print(data['age'])
import json

dic = {
    'name' : 'alan',
    'age' : 100,
    'price': 54283
}
json_str = json.dumps(dic)
print(json_str)
f=open("hello","w+")
dic_str=json.dump(dic,f)
import json
f_read=open('hello','r+')
data=json.loads(f_read.read()) # data=json.load(f_read)
print(data['name'])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值