zoukankan      html  css  js  c++  java
  • Head Frist Python 读书笔记 第4章 “腌制”数据

      Python提供了一个标准库,名为Pickle,它可以保存和加载几乎任何Python数据对象,包括列表。

      同时,官方文档也是对剑使用Pickle进行序列化处理,除此之外,Python中还有一个marshal可以用来序列化,不过似乎比较不好用,比如说会对已经序列化的数据重新序列化进而导致无法识别,不支持用户自定义类的序列化,版本不兼容。

      截止到Python3.4版本,pickling共有0-4五个版本,版本越高,功能越强,越没法直接阅读。

    • Protocol version 0 is the original “human-readable” protocol and is backwards compatible with earlier versions of Python.
    • Protocol version 1 is an old binary format which is also compatible with earlier versions of Python.
    • Protocol version 2 was introduced in Python 2.3. It provides much more efficient pickling of new-style classes. Refer to PEP 307 for information about improvements brought by protocol 2.
    • Protocol version 3 was added in Python 3.0. It has explicit support for bytes objects and cannot be unpickled by Python 2.x. This is the default protocol, and the recommended protocol when compatibility with other Python 3 versions is required.
    • Protocol version 4 was added in Python 3.4. It adds support for very large objects, pickling more kinds of objects, and some data format optimizations. Refer to PEP 3154 for information about improvements brought by protocol 4. 

    pickle包括两个主要的方法

    pickle.dump(obj, file, protocol=None, *, fix_imports=True)  保存数据

    pickle.load(file, *, fix_imports=True, encoding="ASCII", errors="strict") 加载数据

    代码:

    #pickle test
    #to save and load data from disk with pickle
    import pickle
    #save data
    def save_data(data,file_name):
        try:
            with open(file_name,'wb') as file_out:
                pickle.dump(data,file_out)
        except pickle.PickleError as perr:
            print('Pickling error:'+str(perr))
    
    #load data
    def load_data(file_name):
        try:
            with open(file_name,'rb') as file_in:
                data=pickle.load(file_in)
                print(data)
        except pickle.PickleError as perr:
            print('Pickling error:'+str(perr))
  • 相关阅读:
    【转载】如何保证消息的顺序性?
    【转载】如何保证消息的可靠性传输?
    Java 浅拷贝与深拷贝的区别
    int 与 Integer 的区别
    Systemd
    如何查看systemctl启动服务的日志journalctl
    centos7安装killall命令
    关闭root用户的ssh登录
    react带ts创建
    ts-类型别名、类型断言
  • 原文地址:https://www.cnblogs.com/lvjianwei/p/5173616.html
Copyright © 2011-2022 走看看