前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python使用marshal模块操作二进制文件

Python使用marshal模块操作二进制文件

作者头像
Python小屋屋主
发布2018-04-16 15:29:38
9760
发布2018-04-16 15:29:38
举报
文章被收录于专栏:Python小屋Python小屋

Python标准库marshal可以进行对象的序列化和反序列化。 >>> import marshal # 待序列化的对象 >>> x1 = 30 >>> x2 = 5.0 >>> x3 = [1, 2, 3] >>> x4 = (4, 5, 6) >>> x5 = {'a':1, 'b':2, 'c':3} >>> x6 = {7, 8, 9} # 把需要序列化的对象放到一个列表中 >>> x = [eval('x'+str(i)) for i in range(1,7)] >>> x [30, 5.0, [1, 2, 3], (4, 5, 6), {'a': 1, 'b': 2, 'c': 3}, {8, 9, 7}] >>> with open('test.dat', 'wb') as fp: #先写入对象个数 marshal.dump(len(x), fp) for item in x: # 把列表中的对象依次序列化并写入文件 marshal.dump(item,fp) >>> with open('test.dat', 'rb') as fp: # 获取对象个数 n = marshal.load(fp) for i in range(n): # 反序列化,输出结果 print(marshal.load(fp))

30 5.0 [1, 2, 3] (4, 5, 6) {'a': 1, 'b': 2, 'c': 3} {8, 9, 7}

与pickle类似,marshal也提供了dumps()和loads()函数来实现数据的序列化和反序列化,从下面的结果可以看出,使用marshal序列化后的字节串更短一些,可以减少磁盘空间或网络带宽的占用。 >>> import marshal >>> marshal.dumps('董付国') b'\xf5\t\x00\x00\x00\xe8\x91\xa3\xe4\xbb\x98\xe5\x9b\xbd' >>> marshal.loads(_) '董付国' >>> len(marshal.dumps('董付国')) 14 >>> import pickle >>> len(pickle.dumps('董付国')) 19

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-08-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python小屋 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档