zoukankan      html  css  js  c++  java
  • python 实用pickle序列化

    存储数据结构到一个文件中称为序列化。相json这样的格式需要定制的序列化数据的转换器。python提供了pickle模块以特殊的二进制格式保存和恢复数据对象。

    还记得json解析datetime对象时出现问题?但对于pickle就不存在问题:

    >>> import pickle
    >>> import diatomite
    >>> now1 = datetime.datetime.utcnow()
    >>> pickled = pickle.dumps(now1)
    >>> now2 =pickle.loads(pickled)
    >>> now1
    datetime.datetime(2017,3,23,22,20,1970)
    >>> now2

    pickle 同样也适用于自己定义的类和对象。现在,我们定义一个简单的类 tiny,当其对象强制转换为字符串时会返回‘tiny’:

    >>> import pickle
    >>> class Tiny():
    ...         def __str__(self):
    ...         return 'tiny'
    ...
    >>> obj1 = Tiny()
    >>> obj1
    <__main__.Tiny object at 0x10076ed10>
    >>> str(obj1)
    'tiny'
    >>> pickled = pickle.dumps(obj1)
    >>> pickled
    b'x80x03c__main__
    Tiny
    qx00)x81qx01.'
    >>> obj2 = pickle.loads(pickled)
    >>> obj2
    <__main__.Tinyobject at 0x10076e550>
    >>> str(obj2)
    'tiny'

    pickled是从对象obj1转换来的序列化二进制字符串。然后再把字符串还远成对象obj1的副本obj2.使用函数dump()序列化数据到文件,而函数load()用作反序列化。

    备注:

    因为pickle会创建python对象,前面提到的安全问题也同样会发生,不要对你不信任的文件做反序列化。

    在尝试学习新的语言之前先理解这门语言的设计原理能够让你在探索这门新语言时保持一个清醒而且开发的状态。
  • 相关阅读:
    世界本就很简单-云计算
    世界本就很简单-集群
    Linux虚拟机连接网络
    定时任务删除日志文件
    fiddler篡改请求数据
    Jmeter-线程日志查看
    Jmeter-JDBC Request
    Jmeter-查看结果树
    Jmeter-聚合报告
    Jmeter-参数化
  • 原文地址:https://www.cnblogs.com/jackchen001/p/6607739.html
Copyright © 2011-2022 走看看