• 【pickle】详解python中的pickle模块(常用函数、示例)


    1、序列化、反序列化介绍

    序列化:把对象转换为字节序列的过程称为对象的序列化。

    反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

    2、pickle模块说明

    python中的pickle模块实现了基本的数据序列化和反序列化。

    通过pickle模块的序列化操作能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,能够从文件中创建上一次程序保存的对象。

    pickle模块使用的数据格式是python专用的,能够把python对象直接保存到文件,而不需要转化为字符串,也不用底层的文件访问操作把它们写入到一个二进制文件中。

    3、pickle模块常用函数

    (1)pickle.dump(obj, file, [,protocol])

    函数的功能:将obj对象序列化存入已经打开的file中。

    参数:

    obj:想要序列化的obj对象。

    file:文件名称。

    protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import pickle
    4. # 将test对象序列化到文件中
    5. def dump_test_data():
    6. test = [1, 2, 3]
    7. with open("test.pickle", "wb") as file:
    8. pickle.dump(test, file)

    (2)pickle.load(file)

    函数的功能:将file中的对象序列化读出。

    参数:

    file:文件名称。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import pickle
    4. # 将文件中test对象序列化读出
    5. def load_test_data():
    6. with open("test.pickle", "rb") as file:
    7. test = pickle.load(file)
    8. return test

    (3)pickle.dumps(obj[, protocol])

    函数的功能:将obj对象序列化为string形式,而不是存入文件中。

    参数:

    obj:想要序列化的obj对象。

    protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import pickle
    4. # 将test对象序列化为字符串形式
    5. def dumps_test_data():
    6. test = [1, 2, 3]
    7. # dumps 将数据通过特殊的形式转换为仅python语言识别的字符串
    8. str_test = pickle.dumps(test)
    9. print(str_test)

    (4)pickle.loads(string)

    函数的功能:从string中读出序列化前的obj对象。

    参数:

    string:文件名称。

    1. #!/usr/bin/env python
    2. # -*- coding:utf-8 -*-
    3. import pickle
    4. # 从string中读出序列化前的对象
    5. def loads_test_data():
    6. test = [1, 2, 3]
    7. str_test = pickle.dumps(test)
    8. # loads 将pickle数据转化为python的数据结构
    9. loads_test = pickle.loads(str_test)
    10. print(loads_test)

  • 相关阅读:
    带有酒店评论的情绪分析 - 处理数据
    Verilog 代码规范
    C++并发编程
    Lua中pair和ipair的区别
    用DIV+CSS技术设计的餐饮美食网页与实现制作(web前端网页制作课作业)HTML+CSS+JavaScript美食汇响应式美食菜谱网站模板
    docker学习总结
    Delphi TCP服务端监听端口获取客户端RFID网络读卡器上传的刷卡数据
    管理体系标准
    mysql基础语句
    基于神经网络的智能系统,神经元网络控制的作用
  • 原文地址:https://blog.csdn.net/kevinjin2011/article/details/125525373