1-2、make_db_file.py
时间:2021-07-01 10:21:17
帮助过:20人阅读
#-*- 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中的数据打印出来。
1-2、make_db_file.py
标签:int ges rom blog turn load key ems 文件中