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

posted @ 2020-03-10 09:50  笑花大王  阅读(494)  评论(0编辑  收藏  举报