1-2、make_db_file.py

 1 #-*- coding: UTF-8 -*-   
 2 """
 3 用自定义的格式将内存数据库对象保存到文件中;
 4 假定数据不使用‘endrec.’,'enddb.'和‘=》’;
 5 假定数据库是字典的字典;警告:使用eval可能存在危险,它会将字符串当作代码执行;
 6 也可以使用eval()一次创建一条字典记录;
 7 对于print(key,file=dbfile),也可以使用dbfile.write(key + '\n');
 8 """
 9 
10 
11 dbfilename = 'people-file'
12 ENDDB = 'enddb.'
13 ENDREC = 'endrec.'
14 RECSEP = '=>'
15 
16 def storeDbase(db, dbfilename=dbfilename):
17     "将数据库格式化保存为普通文件"
18     dbfile = open(dbfilename, 'w')
19     for key in db:
20         print (key, file=dbfile)
21         for (name,value) in db[key].items():
22             print(name + RECSEP + repr(value),file = dbfile)
23         print(ENDREC, file=dbfile)
24     print(ENDDB, file=dbfile)
25     dbfile.close()
26 
27 def loadDbase(dbfilename = dbfilename):
28     "解析数据,重新构建数据库"
29     dbfile = open(dbfilename)
30     import sys
31     sys.stdin = dbfile
32     db = {}
33     key = input()
34     while key != ENDDB:
35         rec = {}
36         field = input()
37         while field != ENDREC:
38             name,value = field.split(RECSEP)    
39             rec[name] = eval(value)
40             field = input()
41         db[key]= rec
42         key = input()
43     return db
44 
45 if __name__ == '__main__':
46     from initdata import db
47     storeDbase(db)

cmd中执行python 1-2、make_db_file.py后,目录下会多出来一个文件和文件夹

然后,cmd中执行

python

>>>for line in open('people-file'):

>>>  print(line,end='')

>>>

会将initdata中的数据打印出来。

posted @ 2017-04-06 23:28  羊头军师  阅读(444)  评论(0编辑  收藏  举报