zoukankan      html  css  js  c++  java
  • 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可以序列化所有的数据类型,包括类,函数都可以序列化。

  • 相关阅读:
    依次逐个亮灯并且每次只能亮一个灯的跑马灯程序
    逐个点亮LED灯,再逐个熄灭LED灯的跑马灯程序---基于74HC595移位锁存器,程序框架用switch语句
    把74HC595驱动程序翻译成类似单片机IO口直接驱动的方式
    两片联级74HC595驱动16个LED灯的基本驱动程序
    树莓派
    Linux I2C驱动
    转:使用 /proc 文件系统来访问 Linux 内核的内容
    转: 使用 /sys 文件系统访问 Linux 内核
    树梅派 -- 通过/sys读写ADC芯片 pcf8591
    树莓派 -- oled 续(2) python
  • 原文地址:https://www.cnblogs.com/huangxm/p/5305780.html
Copyright © 2011-2022 走看看