【python3】6.pickle json 序列化

本文介绍了Python3中的序列化概念,重点讲解了pickle模块的使用,包括如何序列化字典、列表、元组及类,并指出pickle序列化后的数据不可读且不跨平台。同时提到了json库,强调其可以明文存储数据但无法直接序列化类。
摘要由CSDN通过智能技术生成
2022.11.17 本学习内容总结于莫烦python:6.pickle/json 序列化
https://mofanpy.com/tutorials/python-basic/interactive-python/pickle-json
参考:https://blog.csdn.net/weixin_43625577/article/details/86699789

6 pickle/json 序列化

6.1 序列化

序列化(Serialization):说简单也简单,就是把像字典,列表这类的数据,打包保存在电脑硬盘中。 如果粗略的理解对比,就有点像 zip 和 unzip 的过程。

在程序运行的过程中,所有的变量都是在内存中,比如,定义一个 dict:

a = {
   'name':'Bob','age':20,'score':90}

字典 a 可以随时修改变量,如果没有把修改后的 'name=Bill’存储到磁盘上,下次重新运行程序,变量又被初始化为 ‘Bob’。

我们把变量从内存中变成可存储或传输的过程称之为序列化,在 Python 中叫 pickling 序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即 unpickling

6.2 pickle

  • pickle 序列化后的数据,可读性差,人一般无法识别;
  • pickle 模块只能在 python 中使用,且只支持同版本,不能跨平台使用;
  • Python 中所有的数据类型(列表,字典,集合,类等)都可以用 pickle 来序列化。
    需导入 pickle 模块 — import pickle

6.2.1 打包字典、列表、元组

以字典为例:

  • 打包pickle.dumps(obj): 把 obj 对象序列化后以 bytes 对象返回,不写入文件
import pickle

data = {
   "filename": "f1.txt", "create_time": "today", "size": 111}
pickle.dumps(data)
b'\x80\x04\x958\x00\x00\x00\x00\x00\x00\x00}\x94(\x8c\x08filename\x94\x8c\x06f1.txt\x94\x8c\x0bcreate_time\x94\x8c\x05today\x94\x8c\x04size\x94Kou.'

字典被 pickle 以后,已经面目全非,你不能直接读出来里面的信息,因为这些信息已经被编码了

  • 打包pickle.dump(obj , file) : 序列化对象,并将结果数据流写入到文件对象中

也就是有文件名,要用pickle.dump()

data = {
   "filename": "f1.txt", "create_time": "today", "size": 111}
with open("data.pkl", "wb") as f:
    pickle
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

羊老羊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值