python-- pickle 序列化

简介: python-- pickle 序列化

pickle


dump的结果是bytes, dump用的f文件句柄需要以wb的形式打开, load所用的f是'rb'模式

  • 支持几乎所有对象的序列化
  • 对于对象的序列化需要这个对象对应的类在内存中
  • 对于多次dump / load的操作做了良好的处理
import pickle
dic = {1: (12, 3, 4), ('a', 'b'): 4}
pic_dic = pickle.dumps(dic)
print(pic_dic)  # bytes类型
new_dic = pickle.loads(pic_dic)
print(new_dic)

结果:

b'\x80\x03}q\x00(K\x01K\x0cK\x03K\x04\x87q\x01X\x01\x00\x00\x00aq\x02X\x01\x00\x00\x00bq\x03\x86q\x04K\x04u.'
{1: (12, 3, 4), ('a', 'b'): 4}

pickle支持几乎所有对象的

import pickle
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
zou = Student('aa', 22)
ret = pickle.dumps(zou)
pickle_data = pickle.loads(ret)
print(pickle_data.name)
print(pickle_data.age)

结果:

aa
22

import pickle
class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age
zou = Student('aaa', 83)
with open('pickle_demo', 'wb') as f:
    pickle.dump(zou, f)
with open('pickle_demo', 'rb') as f:
    pic = pickle.load(f)
    print(pic.name)  # 没有上面的类就会报错,因为句话是从实例化类里拿name属性

结果:

aaa

import pickle
with open('pickle_demo', 'wb') as f:
    pickle.dump({'k1': 'v1'}, f)
    pickle.dump({'k11': 'v1'}, f)
    pickle.dump({'k11': 'v1'}, f)
    pickle.dump({'k12': [1, 2, 3]}, f)
    pickle.dump(['k1', 'v1', 'l1'], f)
with open('pickle_demo', 'rb') as f:
    while True:
        try:
            print(pickle.load(f))
        except EOFError:
            break

结果:

{'k1': 'v1'}
{'k11': 'v1'}
{'k11': 'v1'}
{'k12': [1, 2, 3]}
['k1', 'v1', 'l1']

相关文章
|
6月前
|
存储 算法 Python
Python算法——树的序列化与反序列化
Python算法——树的序列化与反序列化
152 1
|
9天前
|
JSON 缓存 安全
Python 的其他应用: 解释什么是 Python 的 pickle 模块?
Python 的其他应用: 解释什么是 Python 的 pickle 模块?
|
4天前
|
存储 编解码 Python
初出茅庐,python模块篇:pickle模块和pathlib模块(太过详细,篇幅较长)_python文件操作模块有pickle模块
初出茅庐,python模块篇:pickle模块和pathlib模块(太过详细,篇幅较长)_python文件操作模块有pickle模块
|
9天前
|
存储 JSON 数据挖掘
python序列化和结构化数据详解
python序列化和结构化数据详解
16 0
|
9天前
|
存储 JSON PHP
python序列化与反序列化
python序列化与反序列化
|
9天前
|
存储 JSON 安全
Python中对象到文件的序列化和反序列化
【4月更文挑战第2天】在Python编程中,序列化和反序列化是处理对象与文件之间转换的重要技术。序列化是将对象状态转换为可以存储或传输的形式的过程,通常是将对象转换为字节流。反序列化则是将序列化后的形式转换回对象的过程。在Python中,我们可以使用`pickle`模块来轻松地实现对象的序列化和反序列化。
|
9天前
|
存储 JSON JavaScript
Python中的JSON与Pickle模块:数据序列化和反序列化的利器
在Python编程中,数据的序列化和反序列化是经常遇到的操作。序列化是将数据结构或对象状态转换为可以存储或传输的格式的过程,而反序列化则是这个过程的逆操作,即将序列化的数据重新转换回原来的数据结构或对象状态。Python中的JSON和Pickle模块就是实现数据序列化和反序列化的强大工具。
|
9天前
|
存储 JSON 安全
序列化模块pickle和json有什么区别
序列化模块pickle和json有什么区别
23 0
|
9天前
|
Go Python 算法
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
745 0
Python每日一练(20230412) 队列实现栈、二叉树序列化、交换链表节点
|
9天前
|
JSON API 网络架构
Python Web 开发: 解释 Django REST framework 的作用,以及如何定义序列化器(Serializer)?
Python Web 开发: 解释 Django REST framework 的作用,以及如何定义序列化器(Serializer)?