序列化和反序列化(json 和pickle)dumps 为序列化, json为反序列化

本文介绍了JSON和Pickle两种序列化方法在Python中的使用技巧,包括如何将Python对象序列化为字符串并写入文件,以及如何从文件中读取字符串并反序列化为Python对象。

json 可以在不同语言中进行使用 

下面先介绍一下json的适用方法

import json, pickle
t1 = {
    'name':'alex',
    'password':'123',
    'age' : '12'
}

t1 = json.dumps(t1)  #进行序列化,把t1被转换成字符串
f = open('t1.txt', encoding='utf-8', mode='w')  #utf-8的编码方式
f.write(t1) # 写入t1,这时候的t1的样子还是原来的样子
f.close()
f = open('t1.txt', encoding='utf-8', mode='r') #打开文件
t = f.read() #读取文件内容
print(json.loads(t)) #反序列化,重新转换为dict形式

 

pickle 只能在python中使用 

json 和 pickle 的语法相同 ,pickle 可以用来传递函数  

下面以pickle为例

序列化.py

def say():
    print('hello')

lis = {
    'name':'alex',
    'password':'123',
    'func': say  #传入函数的内存地址
}
f = open('t2.txt', mode='wb') #以二进制的方式打开
lis = pickle.dumps(lis) #进行序列化,转换后的格式是二进制
f.write(lis) #写入文件
f.close()

f = open('t2.txt', mode='rb')
t = f.read()
data = pickle.loads(t) #反序列化
data['func']()  #验证函数是否还是可执行

 

 

对于json.dumps 和 json.loads  而言 最好是每次转换只出现一次 

 

转载于:https://www.cnblogs.com/my-love-is-python/p/9048387.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值