Python模块学习 ---- marshal 对象的序列化

python:marshal --- 内部 Python 对象序列化 阅读详情

  有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。

 

  注意: marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在不同版本的Python中,marshal的实现可能不一样。也就是说,用python2.5序列为一个对象,用python2.6的程序反序列化所得到的对象,可能与原来的对象是不一样的。但这个模块存在的意义,正如Python手册中所说:The marshal module exists mainly to support reading and writing the “pseudo-compiled” code for Python modules of .pyc files.

下面是marshal模块中定义的一些与序列化/反序列化有关的函数:

marshal.dump(value, file[, version])

  将值写入到一个打开的输出流里。参数value表示待序列化的值。file表示打开的输出流。如:以”wb”模式打开的文件,sys.stdout或者os.popen。对于一些不支持序列类的类型,dump方法将抛出ValueError异常。要特别说明一下,并不是所有类型的对象都可以使用marshal模块来序列化/反序列化的。在python2.6中,支持的类型包括:None , integers, long integers, floating point numbers, strings, Unicode objects, tuple, list, set, dict, 和 code objects。对于tuple, list, set, dict等集合对象,其中的元素必须也是上述类型之一。

marshal.load(file)

  执行与marshal.dump相反的操作,将二进制数据反序列为Python对象。下面是一个例子,演示这两个方法的使用:

1  # coding=gbk
2   
3  import   marshal ,   sys ,   os
4   
5  lst   =   [ 1 ,   ( 2 ,   " string " ) ,   { " key " :   " Value " } ]
6   
7  # 序列化到文件中
8  fle   =   open ( os . path . join ( os . getcwd ( ) ,   ' fle . txt ' ) ,   ' wb ' )
9  marshal . dump ( lst ,   fle )
10  fle . close ( )
11   
12  # 反序列化
13  fle1   =   open ( os . path . join ( os . getcwd ( ) ,   ' fle . txt ' ) ,   ' rb ' )
14  lst1   =   marshal . load ( fle1 )
15  fle1 . close ( )
16   
17  # 打印结果
18  print   lst
19  print   lst1
20   
21  # ----   结果   ----
22  # [1,   (2,   'string'),   {'key':   'Value'}]
23  # [1,   (2,   'string'),   {'key':   'Value'}]

marshal.dumps(value[, version)

  该方法与上面讲的marshal.dump()功能类似,只是它返回的是序列化之后的二进制流,而不是将这些数据直接写入到文件中。

marsahl.load(string)

  将二进制流反序列化为对象。下面的一段代码,演示这两个方法的使用:

1  import   marshal ,   sys ,   os
2   
3  lst   =   [ 1 ,   ( 2 ,   " string " ) ,   { " key " :   " Value " } ]
4   
5  byt1   =   marshal . dumps ( lst )
6  lst1   =   marshal . loads ( byt1 )
7   
8  # 打印结果
9  print   lst
10  print   lst1
11   
12  # ----   结果   ----
13  # [1,   (2,   'string'),   {'key':   'Value'}]
14  # [1,   (2,   'string'),   {'key':   'Value'}]
  

 

  更多关于marshal的内容,请参考Python手册。

知识拓展:Python序列化模块 marshal 模块详解 marshal 是 Python 的内部序列化格式,主要用于序列化和反序列化 Python 对象。它是 Python 字节码(.pyc文件)使用的序列化格式,比 pickle 更原始和受限,但也更快速和安全。 阅读详情

相关推荐

5G时代必知:LDPC与Polar码实战解析(附MATLAB仿真代码)

本文深入解析5G时代核心信道编码技术LDPC码与Polar码的原理差异及性能表现,通过MATLAB仿真代码展示其在实际通信系统中的应用。LDPC码适用于大数据块高速传输,而Polar码在小数据块低时延场景表现优异,帮助开发者优化5G系统设计。

sugar的博客 642

一文了解Python常见的序列化操作

1.marshal marshal使用的是与Python语言相关但与机器无关的二进制来读写Python对象的。这种二进制的格式也跟Python语言的版本相关,marshal序列化的格式对不同的版本的Python是不兼容的。 marshal一般用于Python内部对象的序列化。 一般地包括: 基本类型 booleans, integers,floating point numbers,complex numbers 序列集合类型 strings, bytes, bytearray, tuple, list,

Python热爱者的博客 862

Rockit VDEC解码实战:从零构建高效视频处理流水线

本文详细介绍了Rockit VDEC硬件解码模块在RK3568/RK3588平台的应用实践,涵盖开发环境配置、MPI接口使用、码流发送模式选择、内存管理优化及多路解码系统构建。通过实战案例展示如何利用VDEC实现高效视频处理流水线,显著降低CPU占用率,提升嵌入式多媒体开发效率。

ol789012的博客 305

Python marshal模块 主要函数 marshal.dump(object, file) Marshal.dumps(object) Marshal.load——《跟老吕学Python编程》

是一个强大的工具,用于在Python中处理二进制数据。通过了解它的功能和限制,你可以更有效地使用它来序列化和反序列化Python对象。然而,由于它的限制,如果你需要处理更复杂的对象或需要在不同的Python版本或平台上交换数据,你可能需要考虑使用其他序列化模块,如pickle或json。👨‍💻博主Python老吕评论,您的举手之劳将对我提供了无限的写作动力!🤞🔥《跟老吕学Python编程》《Python游戏开发实战讲解》《Python Web开发实战》《Python网络爬虫实战》

Python老吕的博客 1584

在x86机器上运行jailhouse

jailhouse jaihouse提供了一个demo ,https://github.com/siemens/jailhouse-images可以用于编译一整套可用的demo。 适用于多个平台。编译过程主要参考https://blog.youkuaiyun.com/weixin_39541632/article/details/110422345 此demo可以生成多个平台所用的操作系统image。 ...

闲人的专栏 3004

第7篇-SAP MM模块-JIT应用实战解析,从计划协议到JIT供应的关键配置与流程

本文深入解析SAP MM模块中的JIT(Just In Time)供应模式,从计划协议到JIT供应的关键配置与流程。通过动态计划行管理、需求聚合与分解等核心功能,实现精确数量、时间和地点的物料供应。文章详细介绍了主数据准备、计划协议配置、MRP参数精调及EDI集成方案,并提供了实施中的典型问题与解决方案,助力企业优化供应链管理。

weixin_30363509的博客 948

python-文件操作:marshal

''' python程序将多个数据存储到文件中 ''' # 数据准备 s = "字符串" i = 19 f = 3.1415926 b = True c = 5 + 2p l = [2, "你好", 8] d = {"username": "admin", "password": "123"} #将上面多个数据放在同一个列表中 x = [s, i, f, b, c, l, d]

weixin_44606322的博客 591

从DDPM到DDIM:深入解读《Denoising Diffusion Implicit Models》

DDIM发表在ICRL2021上,是DDPM重要的改进之一,能显著提高DDPM的样本质量、减少采样时间,并且能显式控制插值,已经被广泛应用到现在的Diffusion Models上。这篇博客和大家一起详细解读一下DDIM,认识这一伟大的模型。.........

沉迷单车的追风少年 1万+

python marshal loads failed_python使用marshal模块序列化实例

本文实例讲述了python使用marshal模块序列化的方法,分享给大家供大家参考。具体方法如下:先来看看下面这段代码:?12345678910111213141516171819202122232425262728 import marshal data1 = ['abc',12,23,'jb51'] #几个测试数据 data2 = {1:'aaa',b:'dad'} data3 = (1,2,...

weixin_35823403的博客 1082

Dify与第三方平台(飞书、微信、钉钉)LangBot机器人对接实战

调用链路:飞书用户发消息 → 飞书开放平台事件回调 → LangBot 服务 → Dify 应用接口 → Dify 知识库 + 大模型生成答案 → 原路返回飞书聊天框Dify:承载知识库、提示词配置、大模型调用能力;LangBot:多 IM 渠道适配器,统一对接各大 IM 开放平台与 Dify API;飞书开放平台:提供机器人消息收发、事件推送能力。LangBot 作为中间转发服务,一端对接 Dify 应用 API,一端对接飞书开放平台机器人接口;

悦分享 269

学Simulink——基于扩展卡尔曼滤波(EKF)的列车牵引电机转子温度在线估计仿真

本文介绍了一种基于扩展卡尔曼滤波(EKF)的列车牵引电机转子温度在线估计方法,通过Simulink建模实现。文章首先阐述了EKF在估计电机转子温度中的优势,即利用易测量信号(如电流、电压、转速)在线估计难以直接测量的转子温度,并分析了温升对电机性能的影响。随后详细讲解了电机热电增广模型的构建,包括定子电阻温度关系、一阶热近似模型和PMSM的dq轴方程。接着,文章提供了Simulink建模的详细步骤,包括PMSM+FOC电流环的搭建、EKF算法的实现(推荐使用ExtendedKalmanFilter块或MAT

xiaoheshang_123的博客 56

python marshal loads failed_Python模块学习:marshal 对象的序列化

有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。注意: marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在不同版本的Python...

weixin_39802784的博客 251

JEDEC JESD51-14 瞬态双界面测试方法详解

(瞬态双界面测试方法,用于测量具有单路径热流的半导体器件的结到壳热阻 RθJC,包括结到壳顶部 RθJCT 和结到壳底部 RθJCB)。该标准于 2010 年发布(版本 JESD51-14.1),旨在提供一种准确、可重复的瞬态方法来测量功率半导体器件(如 MOSFET、IGBT)的结到壳热阻(RthJC),取代传统的稳态测量方法(如 MIL-STD-883E METHOD 1012.1)。方法,通过比较两种不同热界面材料(TIM)下的瞬态温度响应曲线,提取 RthJC,而无需直接测量壳温(Tc)。

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 606

Python 中的 marshal 模块:高效数据处理的秘密武器

marshal模块提供了将 Python 值和字节流相互转换的功能。它能将许多 Python 对象类型编码为字节流,这些字节流可以存储在文件中或通过网络传输,之后还能将字节流解码恢复为原始对象。不过,marshal主要用于 Python 的内部需求,并不保证跨 Python 版本的兼容性。将value对象序列化为字节流,并写入到已打开的文件对象file中。file必须以二进制写入模式('wb')打开。marshal。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 2049

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

marshal 对象的序列化

有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。     注意: marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在

chen_lovelotus的专栏 711

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python对象序列化和反序列化pickle和marshal

在开展跨机器交互时,常常要在机器之间传递“对象”,而不仅仅是数据,这样我们就需要将Python对象进行序列化和反系列化,前面的json其实提供了一种序列化和反序列化的机制,但仅仅支持Python的简单对象,对于复杂的对象需要自己实现序列化和反序列化编码。Python提供了一种内部格式的序列化和反序列化机制。

862

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

python序列化模块marshal和cPickle的效率比较

<!-- html {font-family:Times,serif; font-size:12pt} .title {text-align:center} .todo {color:red} .done {color:green} .tag {background-color:#add8e6; font-weight:normal} .timestamp

LittleGrizzly的专栏 2824

python marshal loads failed_在Python中marshal对象序列化的相关知识

有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。注意: marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在不同版本的Python...

weixin_29453497的博客 815

java marshal 序列化_marshal 对象的序列化

有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。注意:marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在不同版本的Python...

weixin_35414437的博客 795

python 中数据序列化与反序列化(marshal)

有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。     注意: marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在

Virtual_Func的博客 1934

python selenium对象怎么序列化_python marshal 对象序列化和反序列化

有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。注意:marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在不同版本的Python...

weixin_39595085的博客 124

pickle与其他Python模块间的关系 Pickle与Marshal间的关系 Pickle与json模块的比较 总结——《跟老吕学Python编程》

pickleMarshal和json都是Python中处理数据序列化和反序列化的重要工具,但它们在用途、安全性、兼容性和性能等方面有所不同。开发者在选择使用哪个模块时,需要根据具体需求和应用场景进行权衡。👨‍💻博主Python老吕评论,您的举手之劳将对我提供了无限的写作动力!🤞🔥《跟老吕学Python编程》《Python游戏开发实战讲解》《Python Web开发实战》《Python网络爬虫实战》《Python APP开发实战》🌐《HTML》《CSS》《Vue》💻《C语言》《C++语言》

Python老吕的博客 1274

java marshal 序列化,python使用marshal模块序列化实例

本文实例讲述了python使用marshal模块序列化的方法,分享给大家供大家参考。具体方法如下:先来看看下面这段代码:import marshaldata1 = ['abc',12,23,'jb51'] #几个测试数据data2 = {1:'aaa',"b":'dad'}data3 = (1,2,4)output_file = open("a.txt",'wb')#把这些数据序列化到文件中,注...

weixin_35411439的博客 287

python marshal 对象序列化和反序列化

有时候,要把内存中的一个对象持久化保存到磁盘上,或者序列化成二进制流通过网络发送到远程主机上。Python中有很多模块提供了序列化与反序列化的功能,如:marshal, pickle, cPickle等等。今天就讲讲marshal模块。     注意: marshal并不是一个通用的模块,在某些时候它是一个不被推荐使用的模块,因为使用marshal序列化的二进制数据格式还没有文档化,在

GGGL的专栏 1万+

Python标准库—pickle/marshal模块

pickle——Python对象序列化 模块pickle 实现了对一个 Python 对象结构的二进制序列化和反序列化。 “Pickling” 是将 Python 对象及其所拥有的层次结构转化为一个字节流的过程,而 “unpickling” 是相反的操作,会将(来自一个binary file或者bytes-like object的)字节流转化回一个对象层次结构。 注意: pickle是Pytho...

L_zzwwen的博客 1101
上一篇: Python模块学习 ---- copy 对象拷贝
下一篇: 汉字拼音数据库
JGood
博客等级 码龄20年 498粉丝 65原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值