• 【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)

  • 相关阅读:
    VSCode连接代理
    企业级开源版本管理系统GIT分析
    IO模型
    C语言的指针
    flutter显示出底部控件的引导页
    抓包整理外篇fiddler————了解工具栏[一]
    在CentOS上安装Nginx服务
    java计算机毕业设计物品分享网站源码+系统+数据库+lw文档+mybatis+运行部署
    网络基本类型
    十大创新方向发布 悬镜安全强势领跑软件供应链安全与开发安全
  • 原文地址:https://blog.csdn.net/kevinjin2011/article/details/125525373