• python(6)- json和pickle模块


    这是用于序列化的两个模块:

    • json: 用于字符串和python数据类型间进行转换
    • pickle: 用于python特有的类型和python的数据类型间进行转换

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

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

    import pickle
    data = {'k1':123, 'k2':123}
    #dumps可以将数据类型转换成只有python才认识的字符串
    p_str = pickle.dumps(data)
    print(p_str)

    执行结果如下:

    b'x80x03}qx00(Xx02x00x00x00k1qx01K{Xx02x00x00x00k2qx02K{u.'

    将数据转换成只有Python认识的字符串,并写入文件:

    import pickle
    data = {'k1':123, 'k2':123}
    #打开文件,然后将data写入
    with open('data.pkl', 'wb') as f:
        pickle.dump(data, f)
    #同样读取的时候也需要打开文件
    with open('data.pkl', 'rb') as f:
        data_1 = pickle.load(f)
    print(data_1)

    执行一下,看看是否正确的读取出来:

    {'k1': 123, 'k2': 123}

    good,  已经正确的读取出来的。

    json的用法和pickle是一样的

    import json
    data = {'k1':123, 'k2':123}
    p_str = json.dumps(data)
    print(p_str, type(p_str))

    执行一下看看结果:

    {"k1": 123, "k2": 123} <class 'str'>

    看起来好像是个字典,但要注意了,实际上这是个字符串,因为json只能是字符串格式,只是看起来像字典而已。

    import json
    data = {'k1':123, 'k2':123}
    
    #打开文件,然后将data写入
    with open('data.pkl', 'w') as f:
        json.dump(data, f)
    
    #同样读取的时候也需要打开文件
    with open('data.pkl', 'r') as f:
        data_1 = json.load(f)
    print(data_1, type(data_1))

    上面这段代码,是写入文件又读取出来。看看执行结果

    {'k2': 123, 'k1': 123} <class 'dict'>

    正确读取出来,而且类型也是正确的。

    那pickle和json有什么区别呢?

    在上面两段代码中,pickle写入和读取文件时,用的是 ‘b’模式,而json没有。

    json是可以在不同语言之间交换数据的,而pickle只在python之间使用。

    json只能序列化最基本的数据类型,而pickle可以序列化所有的数据类型,包括类,函数都可以序列化。

  • 相关阅读:
    (转) SYSTEM_HANDLE_INFORMATION中ObjectTypeIndex的定义
    表达式求值
    c++程序猿经典面试题(2)
    互联网金融风生水起,合作与创新将成为重要议题
    启发录-打造用户喜爱的产品
    android:“新版飞机大战”源码开源啦!
    java入门之——对象转型
    表达式求值
    cocos2d-x中绘制3D图形--3D ToolKit for cocos2dx实现原理
    滚动载入server端内容——样例
  • 原文地址:https://www.cnblogs.com/huangxm/p/5305780.html
Copyright © 2020-2023  润新知