zoukankan      html  css  js  c++  java
  • (7)python序列化与反序列化(json,pickle)

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

      什么叫序列化?把内存数据以指定格式 比如字符串存到文件

      什么叫反序列化?把文件里的内容以原本格式获取到,以便正常使用

    【0】用于序列化的两个模块(json & pickle)

    用于序列化的两个模块

    • json,用于字符串 和 python数据类型间进行转换,通用的:dumps 出来就是字符串
    • pickle,用于python特有的类型 和 python的数据类型间进行转换:dumps 出来就是二进制

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

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

       

    【1】json

    json 一般只适合简单的数据类型,比如字典、字符串、列表 等;

    【1.1】基本序列化与反序列化

    序列化

    import json
    # 什么叫序列化?把内存数据以指定格式 比如字符串存到文件
    f = open('test.txt','w')
    info = {
        'name':'alex',
        'age': 22
    }
    f.write(json.dumps(info))   # 同等于  json.dump(info,f)
    f.close()

    反序列化

    import pickle
    f = open("test.txt",'r')
    data = json.loads(f.read())    # 同等于 data = json.load(f)
    print(data)
    print(data["age"])
    f.close()

    【2】pickle

    【2.1】pickle 序列化与反序列化

    序列化

    import pickle
    # 什么叫序列化?把内存数据以指定格式 比如字符串存到文件
    f = open('test.txt','wb')
    info = {
        'name':'alex',
        'age': 22
    }
    f.write(pickle.dumps(info))   #pickle.dumps出来的是二进制,所以要用 wb ,同等于  pickle.dump(info,f)
    f.close()

    反序列化

    import pickle
    f = open("test.txt",'rb')
    data = pickle.loads(f.read())     # 同等于  data = pickle.load(f)
    print(data)
    print(data["age"])
    f.close()

    【3】可以多次dump吗?不可以

    【4】内置模块:shelve(推荐使用它来序列化和反序列化)

    其实可以算是 pickle 的高级封装

    import shelve
    import datetime
    # 存储
    d = shelve.open('test_shelve')  # 打开一个文件
    info = {'age':22, 'job':'it'}
    name = ["alex", "rain", "test"]
    
    d["name"] = name  # 持久化列表
    d["info"] = info  # 持久化字典
    d["date"] = datetime.datetime.now()
    
    d.close()
    
    # 取出
    d = shelve.open('test_shelve')
    print(d.get("name"))
    print(d.get("info"))
    print(d.get("date"))
    for get_info in d.items():   # 获取所有的条目
        print(get_info)
    d.close()

    还有很多方法 需要自己研究一下;

      

    核心存储,变成了这3个文件:

      

  • 相关阅读:
    JavaScript
    monkeyrunner总结
    repo简介
    android4.4 settings 中控制卡1 卡2都振动
    卡1卡2设置不同的默认铃声
    获取布局 ActionBar
    android Settings 解析
    设置应用中出现NFC服务,去掉
    判断当前网络显示运营商
    设置中默认铃声 通知 闹钟等
  • 原文地址:https://www.cnblogs.com/gered/p/14000337.html
Copyright © 2011-2022 走看看