zoukankan      html  css  js  c++  java
  • 模块之序列化模块详解

    序列化介绍

    序列化指的是把内存的数据类型转换成一个特定的格式的内容, 该格式的内容可用于存储或者传输给其他的平台使用。

    序列化的两种用途:

    1. 持久保存状态: 将程序当前内存中所有的数据都保存下来(保存到文件中),以便于下次程序执行能够从文件中载入之前的数据,然后继续执行,这就是序列化。

    2. 跨平台数据交互: 不仅可以把序列化后的内容写入磁盘,还可以通过网络传输到别的机器上,如果收发的双方约定好实用一种序列化的格式,那么便打破了平台/语言差异化带来的限制,实现了跨平台数据交互。

    json模块详解

    序列化

    序列化采用的主要是json模块的dumps()方法以及dump()方法

    import json
    
    # 序列化
    json_res = json.dumps([1, 'aaa', True, False])
    print(json_res, type(json_res))  # "[1, "aaa", true, false]"
    
    
    # 序列化的结果写入文件
    with open('test.json', 'w', encoding='utf-8') as f:
        json.dump([1, 'aaa', True, False], f)

    反序列化

    反序列化采用的主要是json模块的loads()方法以及load()方法

    import json
    
    # 反序列化
    l = json.loads(json_res)
    print(l, type(l))
    
    
    # 从文件读取json格式字符串进行反序列化操作:
    with open('test.json', 'r', encoding='utf-8') as f:
        l = json.load(f)
        print(l, type(l))

    pickle模块详解

    json模块和pickle模块都有  dumps、dump、loads、load四种方法,而且用法一样。

    不用的是json模块序列化出来的是通用格式,其它编程语言都认识,就是普通的字符串,

    而pickle模块序列化出来的只有python可以认识,其他编程语言不认识的,表现为乱码

    不过pickle可以序列化函数,但是其他文件想用该函数,在该文件中需要有该文件的定义(定义和参数必须相同,内容可以不同)

    import pickle
    
    res = pickle.dumps({1, 2, 3, 4, 5})
    print(res, type(res))
    
    s = pickle.loads(res)
    print(s, type(s))

    shelve模块

     shelve模块比pickle模块简单,只有一个open函数,返回类似字典的对象,可读可写;key必须为字符串,而值可以是python所支持的数据类型

    import shelve
    
    f=shelve.open(r'sheve.txt')
    # f['stu1_info']={'name':'egon','age':18,'hobby':['piao','smoking','drinking']}
    # f['stu2_info']={'name':'gangdan','age':53}
    # f['school_info']={'website':'http://www.pypy.org','city':'beijing'}
    
    print(f['stu1_info']['hobby'])
    f.close()
  • 相关阅读:
    ALV控件的简单案例之二:自定义ALV…
    上传文件时显示选择窗口
    RZ10设置ECC系统参数
    下载时,弹出下载地址选择窗口
    使用程序实现多client切换
    ALV控制某列的颜色
    WebService 创建  发布 调用整个流…
    出口增强 以EXIT_SAPLSZAR_001为例
    使用SAP memory 调用标…
    FunctionModel调用ALV时,自定义工…
  • 原文地址:https://www.cnblogs.com/featherwit/p/13279438.html
Copyright © 2011-2022 走看看