Python pickle 模块

 

与JSON不同的是pickle不是用于多种语言间的数据传输,

它仅作为python对象的持久化或者python程序间进行互相传输对象的方法,因此它支持了python所有的数据类型

 

二进制格式

dumps(obj,[,protocol]) 将obj对象序列化为string形式,而不是存入文件中

import pickle

d = {'name':'alex', 'age': 12}


data = pickle.dumps(d)
print(data)

# b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x04\x00\x00\x00alexq\x02X\x03\x00\x00\x00ageq\x03K\x0cu.'

 

将字符串 以二进制形式保存到文件里

import pickle

d = {'name':'alex', 'age': 12}

with open("data.pkl", "wb") as pk:
    data = pickle.dump(d, pk)
    print(data)

 

pickle.load(file)  将file中的对象序列化读出

注解:从file中读取一个字符串,并将它重构为原来的python对象。
  file:类文件对象,有read()和readline()接口

把文件的二进制格式 转换成Python对象格式

import pickle

with open("data.pkl", "rb") as f:
    data = pickle.load(f)
    print(data)

# {'name': 'alex', 'age': 12}

 

pickle 序列化函数

import pickle

def sayhi():
    pass

data = pickle.dumps(sayhi)
print(data)

# b'\x80\x03c__main__\nsayhi\nq\x00.'

 

pickle 序列化类

import pickle

class Foo(object):
    pass

data = pickle.dumps(Foo)
print(data)

# b'\x80\x03c__main__\nFoo\nq\x00.

 

posted @ 2018-03-11 22:38  minger_lcm  阅读(179)  评论(0编辑  收藏  举报