IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python3 中_pickle (cPickle) 序列化 (Serialization) -> 正文阅读

[Python知识库]python3 中_pickle (cPickle) 序列化 (Serialization)

1.1.概述:
    序列化是将对象的状态信息转换为可以存储或传输的形式的过程
1.2.cPickle与pickle
    二者的功能几乎完全一致接口完全一样(不一样的很少使用到)
    区别:cPickle用C语言编写, 执行速度比pickle快 1000倍
1.3.说明:
    pickle可把python对象直接保存到文件,而不需要把它们转化成字符串,
    也不用底层的文件访问操作把它们写入到一个二进制文件里。 
    pickle会创建一个 python 语言专用的二进制格式。
    基本上不用考虑任何文件细节,它会帮你干净利落地完成文件读写操作。
    唯一需要的只是一个合法的文件句柄
1.4.注意:
    pickle数据格式是Python专用且不向后兼容,其他语言不能识别
    但可用 Python 的 Json 包将数据转化为其他语言可以识别使用的格式
1.5.函数:
    dump()  支持直接将 python 对象序列化并保存到文件
    dumps() 则是将 python 对象序列化到内存
    load()  用于从序列化的文件中加载并反序列化
    loads() 直接将序列化对象反序列化
2.实例:
实例1:
import _pickle as cPickle

file=r'D:\tmp.txt'
obj = False,True,None,'Tom',(1,2),[3,4],set([5,6]),{'k1':7,'k2':8}

# dump 将 obj 直接序列化并保存到 a.txt
with open(file,'wb') as f:
    cPickle.dump(obj,f)#将obj直接序列化并保存到文件

with open(file,'rb') as f:#将文件中的序列化数据转为python对象
    data=cPickle.load(f)
print(data)
# (False, True, None, 'Tom', (1, 2), [3, 4], {5, 6}, {'k1': 7, 'k2': 8})
实例2:
b = cPickle.dumps(obj)#将obj直接序列化但不保存到文件
# b'\x80\x04\x955\x00\x00\x00\x00\x00\x00\x00(\x89\x88N\x8c\x03Tom\x94K\x01K\x02\x86\x94]\x94(K\x03K\x04e\x8f\x94(K\x05K\x06\x90}\x94(\x8c\x02k1\x94K\x07\x8c\x02k2\x94K\x08ut\x94.'
cPickle.loads(b)#将内存中的序列化数据转为python对象
#(False, True, None, 'Tom', (1, 2), [3, 4], {5, 6}, {'k1': 7, 'k2': 8})
3.备注:
dump(obj, file, protocol=None, *, fix_imports=True, buffer_callback=None)
用途:将obj的pickled表示形式写入到打开的文件对象文件中
参数:
    file:文件对象(有write()二进制),io.BytesIO实例
    protocol=4 可选协议0-5
    fix_imports=True,and protocol<3,pickle会尝试
        将Python3名称映射到Python2,数据流就可用Python2读
    buffer_callback=None
        默认缓冲区视图将被序列化作为泡菜流的一部分
        buffer_callback is not None and (protocol is None | protocol< 5)错误
dumps(obj, protocol=None, *, fix_imports=True, buffer_callback=None)
用途:返回对象的腌制的字节表示对象
load(file, *, fix_imports=True, encoding='ASCII', errors='strict', buffers=())
用途:将文件数据反序列化为python对象
参数:
    file:文件对象,BytesIO(必须有read(int),readline(无参数)都应该返回字节数)
    # 以下参数用于控制泡菜流的Python 2兼容性支持
    fix_imports=True将Python2名称映射到Python3中
    encoding='ASCII'编码和错误告诉泡菜如何解码8位Python2字符串
        可是'bytes'来读取这些8位字符串实例作为字节对象
    errors='strict'
    buffers=()
loads(data, /, *, fix_imports=True, encoding='ASCII', errors='strict', buffers=())
用途:将序列化数据反序列化为python对象

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-02-06 13:47:28  更:2022-02-06 13:49:23 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 0:28:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码