zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    基于决策树和智能搜索系统
    基于神经网络的人工智能系统
    身边的人工智能&人工智能发展史
    Linux简介和环境的搭建
    回来啦
    顺序表
    方格计数
    2000年的1月1日,是那一年的第1天。 那么,2000年的5月4日,是那一年的第几天?
    十三、排序算法
    十二、预处理
  • 原文地址:https://www.cnblogs.com/allenzhang-920/p/8991987.html
Copyright © 2011-2022 走看看