【python之路】【4、文件操作】数据类型、文件操作-作业 用文件储存三级菜单并执行

python

 1 #!/usr/bin/python

2 # -*- coding: utf-8 -*-

3 # __author__:"watalo"

4 # date: 2019/9/23

5

6 '''

7 1.用文件操作的方式实现三级菜单,用户可增、删、改、查(1级1级的做)

8 2.需要用的函数:

9 str(),字典转字符串

10 eval(),字符串直接调用引号里的内容,内容是字典话,那就。。。

11 OK,let's go!

12 【idea&question:】

13 1、直接在文件里写好省、市、区名字?

14 开头就出现问题,省市区分文件写,还是写在一个文件,分文件写又应该怎么写,难道每个市都要单独命名一个文件?这TM是个问题啊

15 1.1、为了自动搞出这些名字来,我决定加一个作业,就是用for循环来写,市的名字简化成 省名_1,区名字简化为,省名_1_1这样。

16 写一个menu()函数来实现。for循环已经循环晕了。

17 2、将文件内容变成字典类型,逐渐添加形成一个大字典

18 3、用之前学的字典三级菜单(高大上版)循环。>>>>>>>>>>实现了三级菜单的‘查’功能

19 4、考虑怎么做增、删、改,基本想法是在while循环的过程中添加功能。

20 可以预期的问题,改完后,只是对字典进行了修改,【字典】中的内容怎么返还回去改【文件】。

21 '''

22

23 # 1、自动生成文件

24 def menu(a): # 用a文件里单行内容为名字,生成新文件,并且给新文件添加内容为

25 b = str(a)

26 with open(b, 'r', encoding='utf-8') as m:

27 for prov in m:

28 with open(prov.strip(), 'w', encoding='utf-8') as p: # 创建以省命名的文件

29 for i in range(1, 3):

30 city = str(prov.strip()) + '' + str(i) + '\n' # 格式化城市名称

31 p.writelines(city) # 写入格式化城市名称

32

33 menu('prov') # 生成市级文件

34 with open('prov', 'r', encoding='utf-8') as m: # 生成区级文件

35 for key in m:

36 menu(key.strip())

37

38

39 # 2、通过文件生成一个字典

40 def file_to_dict(a=str(),b={}):

41 menu_dict = dict()

42 with open(a, 'r', encoding='utf-8') as m:

43 for key in m:

44 menu_dict.setdefault(key.strip(), {})

45 return menu_dict

46

47 dict_menu = file_to_dict('prov')

48 for key in dict_menu:

49 dict_menu[key] = file_to_dict(key)

50 m = dict_menu[key]

51 for key2 in m:

52 m[key2] = file_to_dict(key2)

53

54 # 3、3级菜单循环

55 def foldedmenu(dict_menu_c):

56 # dict_menu_c = dict_menu #有预感这句话 换个名字对后面‘增删改’功能会有很大的作用

57 parent_layer = []

58 while True: # 生成一个循环loop

59 for key in dict_menu_c: # 遍历字典的键值,也就是第一层字典key

60 print(key) # 显示出来

61 choice = input('>>>:').strip() # 输入显示出来的第一层,或者 b 返回

62 if len(choice) == 0: continue # 基本判断,确保没有输入东西的时候重复

63 if choice in dict_menu_c:

64 parent_layer.append(dict_menu_c) # 当前层级的字典,直接添加到 列表里面备用

65 dict_menu_c = dict_menu_c[choice] # 循环赋值给dict_menu_c,用于进入下一个层级

66 elif choice == 'b':

67 if parent_layer: # [] 空列表 就是 False

68 dict_menu_c = parent_layer.pop() # 取出列表的最后一个值

69 elif choice == 'q':

70 print('--------END---------')

71 break

72 else:

73 print('请正确输入指令')

74

75 foldedmenu(dict_menu)

以上是 【python之路】【4、文件操作】数据类型、文件操作-作业 用文件储存三级菜单并执行 的全部内容, 来源链接: utcz.com/z/388376.html

回到顶部