• json和pickle序列化+shelve模块


    序列化:把内存中的变量变成可存储或传输的过程称之为序列化

    json序列化和pickle序列化大致都差不多,差异有:

      json可以反序列化各种语言用json序列化之后的内容,而pickle只能反序列化python用pickle序列化之后的内容;

      序列化一般都是序列化成字符串格式,而python3中的pickle序列化是转成二进制的格式

    dumps 序列化

    loads 反序列化

    >>> import json, pickle
    >>> a = [1,2,3]
    >>> b = json.dumps(a)
    >>> b
    '[1, 2, 3]'
    >>> c = pickle.dumps(a)
    >>> c
    '(lp0
    I1
    aI2
    aI3
    a.'
    >>> json.loads(b)
    [1, 2, 3]
    >>> pickle.loads(c)
    [1, 2, 3]

    dump 序列化(把内容放到文件里)

    load 反序列化(加载文件里的内容)

    >>> a = {'today': '星期六', 'mood': 'good'}
    >>> import json
    >>> json.dump(a, open('new.txt', 'w')) # pickle同理

    >>> b = json.load(open('new.txt')) # pickle同理
    >>> b
    {'today': '星期六', 'mood': 'good'}

    shelve模块(对pickle更上一层的封装)是一个简单的k,v将内存数据通过文件持久化的模块,可以持久化任何pickle可支持的python数据格式。

    >>> import shelve
    >>> s = shelve.open('today')
    >>> a = [1, 2, 3, 4, 5]
    >>> b = 666
    >>> s['a'] = a # 存
    >>> s['b'] = b
    >>> s.close()
    >>> s
    <shelve.DbfilenameShelf object at 0x000001DF540A6390>
    >>>
    ^C
    C:UsersAllenZhang>py -3
    Python 3.5.0 (v3.5.0:374f501f4567, Sep 13 2015, 02:27:37) [MSC v.1900 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license" for more information.
    >>> import shelve
    >>> s = shelve.open('today')
    >>> s.get('a') # 读
    [1, 2, 3, 4, 5]
    >>> s.get('b')
    666
  • 相关阅读:
    php中处理汉字字符串长度:strlen和mb_strlen
    天气应用收获总结
    word文档每章的页眉页脚设置
    python资料汇总
    linux 命令——61 wget(转)
    linux 命令——58 ss(转)
    linux 命令——56 ss(转)
    linux 命令——56 netstat(转)
    linux 命令——55 traceroute(转)
    linux 命令——54 ping(转)
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/8991987.html
Copyright © 2020-2023  润新知