Python的marshal模块简介

来源:互联网 发布:周思成网络课程百度云 编辑:程序博客网 时间:2024/06/07 10:31

Python的marshal模块,顾名思义也是负责在Python数值与二进制字节对象之间进行转换的。但是,marshal模块仅供Python解析器内部用作对象的序列化,不推荐开发人员使用该模块处理Python对象的序列化和反序列化。

marshal模块不是通用的序列化/反序列化模块,而是以读写.pyc文件中的Python代码为目的设计的。marshal模块提供的函数可以读写二进制对象为Python数值。这里的二进制对象是Python字节定义的独特二进制格式,与所在机器的体系结构无关。

  • load(file),从文件读取Python数值并返回该值
  • loads(bytes),将读入的字节对象转换为Python数值
  • dump(value, file[, version]),将Python数值写入到文件
  • dumps(value[, version]),将读入的Python数值转换为一个字节对象
  • version,当前marshal模块使用的二进制格式的版本

事实上,要序列化或反序列化Python对象,建议使用pickle模块。如在RPC调用中对Python对象进行远程传输,则使用pickle模块。

如果要对Python对象进行持久化,则使用shelve模块。


参考链接:

https://docs.python.org/3.5/library/marshal.html
https://github.com/python/cpython/blob/3.5/Include/marshal.h
https://github.com/python/cpython/blob/3.5/Python/marshal.c