第17页 Step 2:Storing Records Persistently
Alan (You're Beautiful)
- 章节名:Step 2:Storing Records Persistently
- 页码:第17页
这本书是第四版,作者说书中源码都是Python 3.1中调试通过,所以如果你想在Python 2.7.3中调试书本中的很多源码例子都是无法通过的,比如Example1-2的代码,所以需要针对2.7.3的特性进行修改,代码如下:
dbfilename = 'people-file' ENDDB = 'enddb.' ENDREC = 'endrec.' RECSEP = '=>' def storeDbase(db, dbfilename = dbfilename): "formatted dump of database to flat file" dbfile = open(dbfilename, 'w') for key in db: print >> dbfile, key for (name, value) in db[key].items(): print >> dbfile, name + RECSEP + repr(value) print >> dbfile, ENDREC print >> dbfile, ENDDB dbfile.close() def loadDbase(dbfilename = dbfilename): "parse data to reconstruct database" dbfile = open(dbfilename) import sys sys.stdin = dbfile db = {} key = sys.stdin.readline().strip('\n') while key != ENDDB: rec = {} field = sys.stdin.readline().strip('\n') while field != ENDREC: name, value = field.split(RECSEP) rec[name] = eval(value) field = sys.stdin.readline().strip('\n') db[key] = rec key = sys.stdin.readline().strip('\n') dbfile.close() return db if __name__ == '__main__': from initdata import db storeDbase(db) print loadDbase()上面的代码虽然能在Python 2.7.3中得到想要的结果,但是写法估计还有很多值得改进的地方!
40人阅读
说明 · · · · · ·
表示其中内容是对原文的摘抄