(7)python序列化与反序列化(json,pickle)

 


什么是序列化与反序列化?

  什么叫序列化?把内存数据以指定格式 比如字符串存到文件

  什么叫反序列化?把文件里的内容以原本格式获取到,以便正常使用

【0】用于序列化的两个模块(json & pickle)

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换,通用的:dumps 出来就是字符串
  • pickle,用于python特有的类型 和 python的数据类型间进行转换:dumps 出来就是二进制

Json模块提供了四个功能:dumps、dump、loads、load

pickle模块提供了四个功能:dumps、dump、loads、load

   

【1】json

json 一般只适合简单的数据类型,比如字典、字符串、列表 等;

【1.1】基本序列化与反序列化

序列化

复制代码
import json
# 什么叫序列化?把内存数据以指定格式 比如字符串存到文件
f = open('test.txt','w')
info = {
    'name':'alex',
    'age': 22
}
f.write(json.dumps(info))   # 同等于  json.dump(info,f)
f.close()
复制代码

反序列化

import pickle
f = open("test.txt",'r')
data = json.loads(f.read())    # 同等于 data = json.load(f)
print(data)
print(data["age"])
f.close()

 

【2】pickle

【2.1】pickle 序列化与反序列化

序列化

复制代码
import pickle
# 什么叫序列化?把内存数据以指定格式 比如字符串存到文件
f = open('test.txt','wb')
info = {
    'name':'alex',
    'age': 22
}
f.write(pickle.dumps(info))   #pickle.dumps出来的是二进制,所以要用 wb ,同等于  pickle.dump(info,f)
f.close()
复制代码

反序列化

import pickle
f = open("test.txt",'rb')
data = pickle.loads(f.read())     # 同等于  data = pickle.load(f)
print(data)
print(data["age"])
f.close()

【3】可以多次dump吗?不可以

 

【4】内置模块:shelve(推荐使用它来序列化和反序列化)

其实可以算是 pickle 的高级封装

复制代码
import shelve
import datetime
# 存储
d = shelve.open('test_shelve')  # 打开一个文件
info = {'age':22, 'job':'it'}
name = ["alex", "rain", "test"]

d["name"] = name  # 持久化列表
d["info"] = info  # 持久化字典
d["date"] = datetime.datetime.now()

d.close()

# 取出
d = shelve.open('test_shelve')
print(d.get("name"))
print(d.get("info"))
print(d.get("date"))
for get_info in d.items():   # 获取所有的条目
    print(get_info)
d.close()
复制代码

还有很多方法 需要自己研究一下;

  

核心存储,变成了这3个文件:

  

 

posted @   郭大侠1  阅读(121)  评论(0编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示