到底什么是序列化(picking)呢?

  我们把变量从内存中变成可存储或传输的过程称之为序列化

  序列化之后,就可以把序列化后的内容写入磁盘,或者通过网络传输到别的机器上。

  反过来,把变量内容从序列化的对象重新读到内存里称之为反序列化,即unpickling

  json和pickle模块,两个都是用于序列化的模块

json

#json 是通用的,可以在各种语言里进行交互,只是一个简单的序列化方法
#json把python对象转化成字符串,仅限于简单的数据类型,例如列表,字典,元组等

pickle

#pickle是python中独有的序列化模块,pickle支持序列化所有python数据类型,以二进制的方式序列化

pickle

import pickle
d=[1,2,'a','b']
print(pickle.dumps(d))
print(type(pickle.dumps(d)))

#执行结果
b'\x80\x03]q\x00(K\x01K\x02X\x01\x00\x00\x00aq\x01X\x01\x00\x00\x00bq\x02e.'
<class 'bytes'>

     pickle模块提供了四个功能:dumps、dump、loads、load。

    dumps和dump都是进行序列化,而loads和load则是反序列化

 

  dumps将所传入的变量的值序列化为一个bytes,然后,就可以将这个bytes写入磁盘或者进行传输。

  而dump则更加一步到位,在dump中可以传入两个参数,一个为需要序列化的变量,另一个为需要写入的文件。

import pickle

info={
    'name':'牛魔王',
    'age':'22',
    'sex':''
}
f=open('pickle_text','wb')
f.write(pickle.dumps(info))# -->=pickle.dump(info,f)
f.close()
View Code

相关文章: