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


      Python 标准库 marshal 也可以进行对象的序列化和反序列化,下面的代码进行了简单演示。

     1 import marshal
     2 x1 = 30
     3 x2 = 5.0
     4 x3 = [1,2,3]
     5 x4 = (4,5,6)
     6 x5 = {'a':1,'b':2,'c':3}
     7 x6 = {7,8,9}
     8 
     9 x = [eval('x'+str(i)) for i in range(1,7)]   #把要序列化的对象放到一个列表中
    10 print(x)   #[30, 5.0, [1, 2, 3], (4, 5, 6), {'b': 2, 'a': 1, 'c': 3}, {8, 9, 7}]
    11 
    12 #创建二进制文件
    13 with open('test.dat','wb') as fp:
    14     marshal.dump(len(x),fp)            #先写入对象个数
    15     for item in x:
    16         marshal.dump(item,fp)          #把列表中的对象依次序列化并写入文件
    17 
    18 #打开二进制文件
    19 with open('test.dat','rb') as fp:
    20     n = marshal.load(fp)               #获取对象个数
    21     for i in range(n):
    22         print(marshal.load(fp))        #反序列化,输出结果
    23         
    24 '''
    25 [30, 5.0, [1, 2, 3], (4, 5, 6), {'b': 2, 'a': 1, 'c': 3}, {8, 9, 7}]
    26 30
    27 5.0
    28 [1, 2, 3]
    29 (4, 5, 6)
    30 {'b': 2, 'a': 1, 'c': 3}
    31 {8, 9, 7}
    32 '''
  • 相关阅读:
    网恋现代人的童话
    男人爱女人
    在Web页面中管理服务
    wcf使用入门学习笔记
    table显示细线边框
    wcf整理资料
    启动sqlserver服务的时候报错
    命名规范
    .net中使用xsl文件作为导航菜单
    wcf如何选择绑定
  • 原文地址:https://www.cnblogs.com/avention/p/8780033.html
Copyright © 2020-2023  润新知