Python小推车python学习

Python学习打call第二十六天:序列化与反序列化

2019-02-26  本文已影响12人  暖A暖

1.什么是序列化与反序列化?

2.pickle模块

(1)如何序列化写入文件:

import pickle
list = [1, 2, 3, 4, 5]
dicty = {'name': '可可', 'age': 20}
with open(file='test.txt', mode='wb') as f:
    pickle.dump(list, f)
    pickle.dump(dicty, f)
    
with open(file='test.txt', mode='rb') as f:
    for line in f:
        print(line)

(2)读取文件序列化内容

(3)序列化Python对象

import pickle
def add(x, y):
    print(x + y)

class Add:
    def __init__(self):
        print('hello')

serialise_obj1 = pickle.dumps(add)
serialise_obj2 = pickle.dumps(Add)

print(serialise_obj1)
print(serialise_obj2)

new_add = pickle.loads(serialise_obj1)
new_Add = pickle.loads(serialise_obj2)

print(new_add)
print(new_Add)
print(new_add(1,2))
print(new_Add())

(4)序列化函数还原

import pickle
def add(x, y):
    print(x + y)
    
with open('test.txt', 'wb') as f:
    pickle.dump(add, f)

import pickle
with open('test.txt', 'rb') as f:
    new_function = pickle.load(f)

3.Json模块

# json 跨语言的序列化方式,用于存储和展示数据
{
    "name": "中国",
    "province": [{
        "name": "黑龙江",
        "cities": {
            "city": ["哈尔滨", "大庆"]
        }
    }, {
        "name": "广东",
        "cities": {
            "city": ["广州", "深圳", "珠海"]
        }
    }, {
        "name": "台湾",
        "cities": {
            "city": ["台北", "高雄"]
        }
    }, {
        "name": "新疆",
        "cities": {
            "city": ["乌鲁木齐"]
        }
    }]
}
# python 与 json对象的转化
import json
dictionary = {
    'name': 'Robby',
    'age': 27
}
json_obj = json.dumps(dictionary)
print(json_obj)
new_dict = json.loads(json_obj)
print(new_dict)
# json.dump()和json.load() 是将json对象保存到文件

4.msgpack模块

# 需要先安装
# pip install msgpack-python
# 示例
import msgpack
dictionary = {
    'name': 'Robby',
    'age': 27
}
msgpack_obj = msgpack.packb(dictionary)
print(msgpack_obj)
new_dictionary = msgpack.unpackb(msgpack_obj, )
print(new_dictionary)
print(type(new_dictionary))

参考:侠课岛(9xkd.com)Python同学计划

上一篇 下一篇

猜你喜欢

热点阅读