序列化数据 Pickling Data

  • 前几节的文件处理,都是读写字串信息;
  • 但是在一些情况中,你需要操作其它的数据类型,比如说: 列表,元组,字典或是其它对象.
  • 在Python 通过序列化方法来处理,标准化库中已经包含了这个 "pickle" 模块.
    • 让我们先序列化一个混合了字串和数字的列表:

         1     import pickle
         2 
         3     fileHandle = open ( 'pickleFile.txt', 'w' )
         4 
         5     testList = [ 'This', 2, 'is', 1, 'a', 0, 'test.' ]
         6 
         7     pickle.dump ( testList, fileHandle )
         8 
         9     fileHandle.close()
      
    • 解序列,也非常容易:

         1 
         2     import pickle
         3 
         4     fileHandle = open ( 'pickleFile.txt' )
         5 
         6     testList = pickle.load ( fileHandle )
         7 
         8     fileHandle.close()
      
    • 当然可以存储复杂的数据:

         1     import pickle
         2 
         3     fileHandle = open ( 'pickleFile.txt', 'w' )
         4 
         5     testList = [ 123
         6                 , { 'Calories' : 190 }
         7                 , 'Mr. Anderson'
         8                 , [ 1, 2, 7 ]
         9                 ]
        10 
        11     pickle.dump ( testList, fileHandle )
        12 
        13     fileHandle.close()
        14 
        15     import pickle
        16 
        17     fileHandle = open ( 'pickleFile.txt' )
        18 
        19     testList = pickle.load ( fileHandle )
        20 
        21     fileHandle.close()
      
    • 如你所见,通过"pickle"模块可以非常简单序列化对象为文件存储,你也可以使用 "cPickle" 模块(如果你安装的话),一看名字就知道这是使用 C 实现的相同功能的模块, 因为它要更快:

         1 
         2     import cPickle
         3 
         4     fileHandle = open ( 'pickleFile.txt', 'w' )
         5 
         6     cPickle.dump ( 1776, fileHandle )
         7 
         8     fileHandle.close()
      


-- ZoomQuiet [2005-02-06 15:27:27]