zoukankan      html  css  js  c++  java
  • Python pickle模块

    python的pickle模块实现了基本的数据序列和反序列化。通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。
    Pickle模块中最常用的函数为: dump、dumps、load、loads
    (1)pickle.dump(obj, file, [,protocol])
    函数的功能:将obj对象序列化存入已经打开的file中。
    参数讲解:
    obj:想要序列化的obj对象。
    file:文件名称,是一个带有写权限的文件对象,如果protocol>=1, file需要以二进制(wb)形式操作。
    protocol:序列化使用的协议。如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
    (2)pickle.load(file)
    函数的功能:将file中的对象序列化读出。
    参数讲解:
    file:文件名称,是一个带有读权限的文件对象,如果protocol>=1, file需要以二进制(rb)形式操作
    (3)pickle.dumps(obj[, protocol])
    函数的功能:将obj对象序列化为string形式,而不是存入文件中。
    参数讲解:
    obj:想要序列化的obj对象。
    protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。
    (4)pickle.loads(string)
    函数的功能:从string中读出序列化前的obj对象。
    参数讲解:
    string:文件名称。
    【注】 dump() 与 load() 相比 dumps() 和 loads() 还有另一种能力:dump()函数能一个接着一个地将几个对象序列化存储到同一个文件中,随后调用load()来以同样的顺序反序列化读出这些对象。

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2017/12/26 0026 15:18
    # @Author  : ming
    __author__ = 'ming'
    # pickle模块主要函数的应用举例
    import pickle
    DataList = [
        ["yang", 20, '6873264382'],
        ["ming", 32, '7298349832'],
        ["coke", 14, '2937972439'],
    ]
    DataDic = {
        "A": [1, 2, 3, 4, ],
        "B": ('hello', 'world',),
        "C": {'my': 'yes', 'you': 'no'}
    }
    
    # 使用dump()将数据序列化到文件中
    fo = open('File.txt', 'wb')
    pickle.dump(DataList, fo, -1)
    pickle.dump(DataDic, fo)
    fo.close()
    
    # 使用load()将数据从文件中序列化读出
    fo = open('File.txt', 'rb')
    data1 = pickle.load(fo)
    print(data1)
    data2 = pickle.load(fo)
    print(data2)
    fo.close()
    
    # 使用dumps()和loads()举例
    p = pickle.dumps(DataList)
    print(pickle.loads(p))
    p = pickle.dumps(DataDic)
    print(pickle.loads(p))
    [['yang', 20, '6873264382'], ['ming', 32, '7298349832'], ['coke', 14, '2937972439']]
    {'A': [1, 2, 3, 4], 'C': {'my': 'yes', 'you': 'no'}, 'B': ('hello', 'world')}
    [['yang', 20, '6873264382'], ['ming', 32, '7298349832'], ['coke', 14, '2937972439']]
    {'A': [1, 2, 3, 4], 'C': {'my': 'yes', 'you': 'no'}, 'B': ('hello', 'world')}

  • 相关阅读:
    Appium+python自动化(三十九)-Appium自动化测试框架综合实践
    Mish:一个新的SOTA激活函数,ReLU的继任者
    [Python爬虫] 使用 Beautiful Soup 4 快速爬取所需的网页信息
    Windows环境下的TensorFlow安装过程
    深度学习必懂的13种概率分布
    LaTeX技巧96:LaTeX 图片控制命令,位置控制
    设置UniDbGrid的整行显示颜色,如果某字段值是我们的控制字段
    UniDBGrid增加显示记录数的label及隐藏refresh按钮
    unidbgrid 设置 单元格颜色
    给uniGUI的表格控件uniDBGrid加上记录序号的列
  • 原文地址:https://www.cnblogs.com/ming5218/p/8143582.html
Copyright © 2011-2022 走看看