python序列化与反序列化

本文介绍了Python中序列化与反序列化的概念及其应用场景,包括使用pickle和json模块进行数据的持久化存储和读取的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、序列化
程序运行的过程中,所有变量都是在内存中操作的,当程序一旦执行完毕,结束退出后,变量占有的内存就被操作系统回收了。 因此我们需要将某些数据持久化存储到磁盘中,下次运行的时候从磁盘中读取相关数据。
我们将变量从内存中变成可以存储或传输的过程称之为序列化,在Python中叫做pickling,在其它语言中也称之为 serialization、marshaling、flattening等等,说的都是一个意思。 反之,则为反序列化,称之为unpickling,把变量内容从序列化的对象重新读取到内存中。
序列化

import pickle
dict = dict(name='lcj', age = 18)
str = pickle.dumps(dict)
# str输出 :b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x12X\x04\x00\x00\x00nameq\x02X\x03\x00\x00\x00lcjq\x03u.'
print(str)
# 序列化到文件中
f = open(os.path.join(os.path.abspath('.'), '1.txt'), 'wb')
pickle.dump(dict, f)

反序列化

f1 = open(os.path.join(os.path.abspath('.'), '1.txt'), 'rb')
try:
    # 将刚才序列化的内容加载到内存中
    str = pickle.load(f1)
except EOFError:
    pass
f1.close()
print(str)

由pickle序列化后的内容是看不懂的,只有python可以看懂。所以如果我们有一个文件现在存下来,并且日后要在其他地方用到的话,我们可以用JSON来做序列化。Python的数据结构跟Json有非常完美的兼容:
这里写图片描述

import json

# 定义dict字典对象
d1 = {'name':'lichaojun', 'age':'12'}
str = json.dumps(d1) # 调用json的dumps函数进行json序列化处理
print(str)

# 调用json的loads函数进行反序列化处理
d2 = json.loads(str)

import json
d1 = {'name':'lichaojun', 'age':'12'}
# 将dict写入到文件中,写入到文件中后是json字符串
json.dump(d1, open(os.path.join(os.path.abspath('.'), '3.txt'), 'w'))
# 反序列化
str = json.load(open(os.path.join(os.path.abspath('.'), '3.txt'), 'r'))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值