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 '''
  • 相关阅读:
    表单全选,不选和反选
    利用js改变宽,高等属性
    点击显示与隐藏
    改变div的不同属性
    给三个不同的div变色
    经典排序算法实现
    基本排序算法的实现
    排序的概念及分类实现
    #和##运算符实例
    #pragma预处理实例
  • 原文地址:https://www.cnblogs.com/avention/p/8780033.html
Copyright © 2011-2022 走看看