• python-json&pickle模块(序列化模块)


    什么叫序列化?

    就是把内存里的数据存到硬盘上。

    为什么要把了内存里的数据存在硬盘上?

    1.程序在运行,关闭了,内存数据丢失。

    2.下次程序再启动,再从硬盘上读回来,还是原来的格式的话,那是极好的。

    3.内存里的数据多为嵌套字典的形式。

    把内存数据取出来有什么意义?

      1.把内存数据,通过网络 共享给其他人。

      2.可以跨平台、跨语言共享数据。eg:c、java、python

    #1.json 用法
    # dumps 序列化
    
    import json
    
    
    data = {'k1': 123, 'k2': 345}
    # 把data序列化成字符串
    d = json.dumps(data)
    print(d, type(d))
    
    # 把data序列化成字符串并存入文件
    f = open('test.json', 'w')
    json.dump(data, f)
    
    # 把序列化字符串转回字典
    d2 = json.loads(d)
    print(d2['k1'])
    
    # 把data序列化成字符串并存入文件
    f = open('test.json', 'r')
    data2 = json.load(f)
    print(data2, type(data2))

    注意:dump可以写多次,但是load只能是一次。会报json反序列化错误。

    2.pickle

    注意:open方法时,只能用‘wb’或‘rb’。

    # 2.pickle 用法
    import pickle
    #
    data2 = {'k1': 123, 'k2': 345}
    pk = open('data.pkl', 'wb')
    d2 = pickle.dump(data2, pk)
    print(d2)
    
    # 把data序列化成字符串并存入文件
    f2 = open('data.pkl', 'rb')
    data3 = pickle.load(f2)
    print(data3, type(data3))

    pickle和json 有什么区别呢?

    json  支持:字符串、列表、字典、等类型序列化  json在其他平台的语音都能使用。

    pickle 支持:全部的类型、包括函数  但是pickle只在python中特有

    shelve模块(持久化)

    它与json、pickle 的区别是,shelve模块是对pickle的封装,是python独有的,允许load多次

    import shelve
    # 2.反持久化操作(load)
    f = shelve.open('shelve_test')
    print(list(f.items()))
    print()
    # 1. 查
    print(f['names'])   # 查列表里的值
    print(f['info_dic']['name'], f['info_dic']['age'])  # 取列表中字典的值
    
    # 2. 改
    # 修改列表的值 ,只能整体替换。
    new_lst = ['A', 'b', 'C']
    f['names'] = new_lst
    print(f['names'])
    
    # 修改列表里字典的值 ,只能整体替换。
    new_dic = {'name': 'abc', 'age': 30}
    f['info_dic'] = new_dic
    print(f['info_dic'])
    
    #
    f.popitem()
    print(list(f.items()))
  • 相关阅读:
    解决大量TCPIP连接后出现“因为系统缺乏足够缓冲区空间或者因为队列已满无法执行套接字上操作”的问题
    网站/网页 变灰的方法
    [收藏]General things to take into consideration while doing socket programming.
    数据库主体在该数据库中拥有 架构,无法删除解决方法
    Word字体与像素的对应关系
    50个网站设计开发必备的资源素材网站
    apache实现页面重定向(地址跳转)
    JS eval(function(p,a,c,k,e,r){e=function(c)*****解密
    JS打印指定区域内容
    如何才能做到网站高并发访问? .
  • 原文地址:https://www.cnblogs.com/AYxing/p/8667342.html
Copyright © 2020-2023  润新知