# Author:Alano # -*- conding:utf-8 -*- # 这里有一个问题:为什么手动删除了haproxy_new中的内容,但是执行添加命令的时候依然显示数据已经存在? f = open("haproxy","r") f_new = open("haproxy_nw","w",encoding="utf-8") b = f.readlines() option = ("1、请输入搜索的地址:","2、请输入增加的内容:","3、请输入删除的内容:") def f_back(): for i in range(1,100): k = input('输入q返回上一级菜单 >>>') if k!='q': i += 1 else: break while True: for i in option: print(i) choice = input("请选择操作方式:序列号>>>") if choice == "1": data = input("请输入搜索地址:") address = "backend %s\n"%data # 利用字符串拼接,定义一个变量. if address in b: # 利用列表的下标来定位位置,然后通过下标打印内容。 index_add = b.index(address) print(b[index_add],b[index_add+1]) if address not in b: print("您查找的内容不存在") f_back() if choice =="2": data = input("输入增加内容,格式{'backend':,'record':{'server':,'weight':,'maxconn':}} >>> ") # 输入一条字典信息 data_eval = eval(data) # 通过列表计数器来判断输入的内容是否在列表中存在,如果计数器为0则不存在,如果计数器不为0则存在。 f_find = b.count("backend %s\n"%data_eval['backend']) # 如果backend后的内容在文件中不能找到则新增。 if f_find == 0: for line in b: f_new.write(line) # 将输入的内容通过字符串拼接的形式写入文件中 f_new.write("\nbackend ") f_new.write(data_eval["backend"]) f_new.write("\n server %s weight %s maxconn %s"\ %(data_eval["record"]["server"],data_eval["record"]["weight"] ,data_eval["record"]["maxconn"])) print("新增一条数据") if f_find != 0: print("您添加的内容已经存在") f_back() if choice =="3": data = input("请输入删除内容 >>> ") data_eval = eval(data) f_find = b.count("backend %s\n"% data_eval['backend']) if f_find != 0: del data_eval print("删除一条内容") else: print("您输入的内容文件中不存在") f_back() f.close() f_new.close()
这里有个疑问,我自己也不知道怎么回事,在执行插入新增项之后返回初始菜单,再进行插入同样数据,不是应该报错“您添加的内容已经存在”。。。
下面报错I\O operation on closed file,需要关闭文件才能放出释放内存,那用flush() 一下会不会能执行呢? 【待会回家上图。。】
新手上路。。。。还是需要多学习啊。。。。