Differences between revisions 2 and 3
Revision 2 as of 2005-03-11 01:59:20
Size: 1683
Editor: wirelessman
Comment:
Revision 3 as of 2009-12-25 07:11:04
Size: 1683
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 66: Line 66:
-- ZoomQuiet [[[DateTime(2005-02-06T15:27:27Z)]]] -- ZoomQuiet [<<DateTime(2005-02-06T15:27:27Z)>>]

序列化数据 Pickling Data

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

      Toggle line numbers
         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() 
      
    • 解序列,也非常容易:

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

      Toggle line numbers
         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 实现的相同功能的模块, 因为它要更快:

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


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

FileManagementInPython/PicklingData (last edited 2009-12-25 07:11:04 by localhost)