1 #-*- coding: UTF-8 -*- 2 """ 3 用自定义的格式将内存数据库对象保存到文件中; 4 假定数据不使用‘endrec.’,'enddb.'和‘=》’; 5 假定数据库是字典的字典;警告:使用eval可能存在危险,它会将字符串当作代码执行; 6 也可以使用eval()一次创建一条字典记录; 7 对于print(key,file=dbfile),也可以使用dbfile.write(key + ' '); 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中的数据打印出来。