zoukankan      html  css  js  c++  java
  • python学习-pickle模块(序列化)

     简介

    1

     python-pickle模块

    pickle模块实现了用于序列化和反序列化Python对象结构的二进制协议。 “Pickling”是将Python对象层次结构转换为字节流的过程, “unpickling”是反向操作,从而将字节流(来自二进制文件或类似字节的对象)转换回对象层次结构。pickle模块对于错误或恶意构造的数据是不安全的。

    import pickle
    dataList = [[1, 1, 'yes'],
                [1, 1, 'yes'],
                [1, 0, 'no'],
                [0, 1, 'no'],
                [0, 1, 'no']]
    dataDic = { 0: [1, 2, 3, 4],
                1: ('a', 'b'),
                2: {'c':'yes','d':'no'}}
    with open('demo.txt','wb') as in_data:
        pickle.dump(dataList,in_data,pickle.HIGHEST_PROTOCOL)
        pickle.dump(dataDic,in_data,pickle.HIGHEST_PROTOCOL)
    with open('demo.pkl','rb') as out_data:
        # 按保存变量的顺序加载变量
        data = pickle.load(out_data)
        print(data) # dataList
        data=pickle.load(out_data)
        print(data) # dataDic
        
    pickle.dump(obj, file, [,protocol])
    #函数的功能:将obj对象序列化存入已经打开的file中。
    参数
        obj:想要序列化的obj对象。
        file:文件名称。
        protocol:序列化使用的协议。如果该项省略,则默认为0。
        如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。


    pickle.load(file)

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

    pickle.dumps(obj[, protocol])

    函数的功能:将obj对象序列化为string形式,而不是存入文件中。
    参数:
    obj:想要序列化的obj对象。
    protocal:如果该项省略,则默认为0。如果为负值或HIGHEST_PROTOCOL,则使用最高的协议版本。

    pickle.loads(string)

    函数的功能:从string中读出序列化前的obj对象。
    参数:
    string:文件名称。

    【注】 dump() 与 load() 相比 dumps() 和 loads() 还有另一种能力:
    dump()函数能一个接着一个地将几个对象序列化存储到同一个文件中,
    随后调用load()来以同样的顺序反序列化读出这些对象。

     简介

    11

     简介

    1111

  • 相关阅读:
    [LeetCode] Search for a Range
    [C++] extern关键字的作用
    [LeetCode] Sentence Similarity
    [LeetCode] Flood Fill
    [LeetCode] Can Place Flowers
    [LeetCode] Intersection of Two Linked Lists
    [LeetCode] My Calendar II
    [LeetCode] My Calendar I
    [LeetCode] Self Dividing Numbers
    [LeetCode] Range Sum Query
  • 原文地址:https://www.cnblogs.com/xhds/p/12453918.html
Copyright © 2011-2022 走看看