zoukankan      html  css  js  c++  java
  • 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 '''
  • 相关阅读:
    又回来咯
    4 20210412-1 原型设计作业
    3 20210405-1 案例分析作业
    202103226-1 编程作业
    阅读任务
    准备工作
    原型设计作业
    案例分析
    编程作业
    构建之法读后感
  • 原文地址:https://www.cnblogs.com/avention/p/8780033.html
Copyright © 2011-2022 走看看