Python中的json和pickle模块序列化

json 序列化主要是用于前后端交互
    dict/list/int/str ---> json
    json.dump() 再次追加的时候容易出问题

pickle 序列化,主要是用于保存文件,pickle 单词本身的意思就是腌制(是把东西腌起来保存成文件,要用的时候读出来洗洗还能用)
    优势: 所有的python对象, 变成一个二进制字节流,存储到硬盘(文件中), 用的时候再取出来
    缺点: pickle序列化后的数据,可读性差,人一般无法识别。
    详细说明
        https://blog.csdn.net/chunmi6974/article/details/78392230
    应用场景:
        session存储 cache 存储, 配置文件上传
    安全问题:
        https://my.oschina.net/chinahermit/blog/102559
# json序列化
def json_func():
    import json

    demo_dict = {"name": "小小臭臭g", "age": "20", "number": 20200908}

    json_str = json.dumps(demo_dict, ensure_ascii=True)  # 默认为True
    print(json_str)  # 只是变成了json字符串(str)
    print(type(json_str))

    python_dict = json.loads(json_str)
    print(python_dict)  # 变回python的dict
    print(type(python_dict))

    from idna import unicode
    str2 = "\u5c0f\u5c0f\u81ed\u81edg"
    print(unicode(str2))


# pickle序列化
def pickle_write():
    import pickle
    demo_dict = [{"name": "小小臭臭g", "age": "22", "number": 20200908}]

    ret_str = pickle.dumps(demo_dict)  # 变成二进制的字符串(bytes)
    print(ret_str)
    with open("xuliehua.pickle", "ab+") as f:
        for i in range(5):
            pickle.dump(demo_dict, f)


def pickle_read():
    import pickle
    with open("xuliehua.pickle", "rb") as f:
        for i in range(5):
            ret = pickle.load(f)
            print(ret)

        print(pickle.load(f))  # 因为pickle_write中dump了五次, 所以这里只能load 5次, 第6次会报错Ran out of input


if __name__ == '__main__':
    pickle_write()
    pickle_read()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值