Python---json和pickle序列化

1. 序列化:把内存的一些数据对象存到硬盘。数据对象是一些基本数据类型,如list dict,set等。

2. 反序列化:将硬盘的内容加载成原来的数据对象。

3. 为什么要用序列化与反序列化:当你想把一个数据暂时保存起来而过会又要用的时候,就可以把它先保存到硬盘,保证安全性。需要时在取出来。

4.  json序列化

一般将内存数据对象存到硬盘上的方法如下:  文件只能存字符串或二进制

person={"name":'hy',
        "age":18}
f=open("test.text","w")
f.write(str(person))
f.close
f=open("test.text","r")
data=eval(f.read())
f.close
print(data['name'])

而json序列化的方法如下:

import json
#json序列化
person={"name":'hy',
        "age":18}
f=open("test.text","w")
f.write(json.dumps(person))   #json.dumps()将基本数据类型转为str
f.close()

#json 反序列化
f=open("test.text","r")
data=json.loads(f.read())  #json.loads()将字符串转为基本数据类型
print(data['age'])

json序列化只支持简单的数据转化。

5. pickle序列化可对函数进行序列化。如下:

def hello(name):
    print("hello world",name)
import pickle
person={"name":'hy',
        "age":18,
        "func":hello,
        }
f=open("test.text","wb")
f.write(pickle.dumps(person))   #pickle.dumps()将数据类型转为str
f.close()

#pickle 反序列化
f=open("test.text","rb")
data=pickle.loads(f.read())  #pickle.loads()将字符串转为数据类型
print(data['age'])
print(data["func"]("hhy"))
f.close()

函数序列化的是整个函数对象非函数名地址。Pickle序列化只存在在Python语言。而json与其他语言几乎通用。

此外:

f.write(pickle.dumps(person))  #等价于 pickle.dump(person,f)
data=pickle.loads(f.read())   #等价于data=pickle.load(f)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值