zoukankan      html  css  js  c++  java
  • python 序列化模块

    序列化模块

    序列化——转向一个字符串数据类型

    序列——字符串

    用在数据存储以及在网络上传输的时候等

    从数据类>>>字符串的过程 叫序列化

    从字符串>>>数据类型的过程 叫反序列化

    序列化格式

    json 通用的序列化格式

    json是一个在所有语言都通用的序列化格式,但是相对的它支持的数据类型就比较少了

    只有很少的一部分数据类型能够通过json转化成字符串

    在python中,数字int,字符串str,列表list,字典dict都是能序列化的

    元组tuple也能序列化,不过它是转成列表再序列化的,反序列化后还是列表

    集合set是不能进行序列化的

    json的序列化方法dumps和反序列化方法loads

    dumps

    import json
    li = [1,2,3,'holle',[22,33],{'k1':'v1'},(23,3)]
    ret = json.dumps(li)
    print(type(ret),ret)

    <class 'str'> [1, 2, 3, "holle", [22, 33], {"k1": "v1"}, [23, 3]]

    loads

    import json
    li = [1,2,3,'holle',[22,33],{'k1':'v1'},(23,3)]
    ret = json.dumps(li)
    print(type(ret),ret)
    ret2 = json.loads(ret)
    print(type(ret2),ret2)

    <class 'str'> [1, 2, 3, "holle", [22, 33], {"k1": "v1"}, [23, 3]]
    <class 'list'> [1, 2, 3, 'holle', [22, 33], {'k1': 'v1'}, [23, 3]]

    除了这俩还有另外两个dumpload,这俩看着和上面俩只是差个s

    它们的功能也是相似的,当然也有着不听之处

    dump

    import json
    li = {1:"a",2:'b'}
    f = open('file','w',encoding='utf-8')
    json.dump(li,f)
    f.close()

    它的作用是在一个文件中写入序列化之后的字符串

    load

    import json
    li = {1:"a",2:'b'}
    f = open('file','w',encoding='utf-8')
    json.dump(li,f)
    f.close()
    f = open('file')
    res = json.load(f)
    f.close()
    print(type(res),res)

    <class 'dict'> {'1': 'a', '2': 'b'}

    对文件的读取,读取必须是用dump写入的

    pickle

     所有python中的数据类型都可以转化成字符串形式

    pickle序列化的内容只有python能理解

    pickle反序列化必须要与序列化时相同的环境支持

    pickle的用法和json的一样

    不过dumps写的是bytes类型的,所以读写要加上bytes类型的转换

    shelve

    序列化句柄

    使用句柄直接操作,非常方便

    import shelve
    f = shelve.open('shelve_file')
    f['key'] = {'int':10, 'float':9.5, 'string':'Sample data'}
    f.close()
    f1 = shelve.open('shelve_file')
    existing = f1['key'] 
    f1.close()
    print(existing)

    {'float': 9.5, 'int': 10, 'string': 'Sample data'}

    直接对文件句柄操作,就可以存入数据

    取出数据的时候也只需要直接用key获取即可,但是如果key不存在会报错

  • 相关阅读:
    不要在股市上浪费时间(够深刻,耽误自己真本事的提高,即使是价值投资也不值得去做)
    在公司里混日子最终伤害的是你自己
    天使投资人的作用
    115太酷了,居然出了个TV版客户端
    QWidget与HWND的互相转换
    Ubuntu12.10 下搭建基于KVM-QEMU的虚拟机环境(十五)
    QString的不常见用法
    不要神话创业,什么东西都可以自己做,损失就是不拿工资。如果吃不上饭了,那还是不要创业。服务器很便宜
    C++的try catch到底能防止什么错误?
    迷茫的时候,就随机择一去学,时间不要浪费在选择上了
  • 原文地址:https://www.cnblogs.com/GrandDarkness/p/8269346.html
Copyright © 2011-2022 走看看