import json #查询函数 def fetch(backend): backend_title = "backend %s" %backend record_list = [] with open("data.txt", "r") as obj: flag = False for line in obj: line = line.strip() if line == backend_title: flag = True continue if flag and line.startswith("backend"): #匹配到第二个backend开头的字符串则退出循环 flag = False break if flag and line: #把第一个backend开头的字符串后的不为空的数据存入列表 record_list.append(line) return record_list #添加函数 def add(dict_info): backend = dict_info.get("backend") record_list = fetch(backend) backend_title = "backend %s" % backend current_record = "server %s %s weight %d maxconn %d" %(dict_info["record"]["server"], dict_info["record"]["server"], dict_info["record"]["weight"], dict_info["record"]["maxconn"]) if not record_list: #如果列表为空(配置表中没有这个数据),则添加到列表中 record_list.append(backend_title) record_list.append(current_record) with open("data,txt", "r") as read_file, open("new_data.txt", "w") as write_file: flag = False for line in read_file: write_file.write(line) for i in record_list: if i.startswith("backend"): write_file.write(i+" ") else: write_file.write("%s%s " %(8*" ", i)) else: record_list.insert(0, backend_title) if current_record not in record_list: record_list.append(current_record) with open("data.txt", "r") as read_file, open("new_data.txt", "w") as write_file: flag = False has_write = False for line in read_file: line = line.strip() if line == backend_title: flag = True continue if flag and line.startswith("backend"): flag = False if not flag: write_file.write(line+" ") else: if not has_write: for i in record_list: if i.startswith("backend"): write_file.write(i+" ") else: write_file.write("%s%s " %(8*" ", i)) has_write = True #删除函数 def remove(dict_info): backend = dict_info.get("backend") record_list = fetch(backend) backend_title = "backend %s" % backend current_record = "server %s %s weight %d maxconn %d" % ( dict_info["record"]["server"], dict_info["record"]["server"], dict_info["record"]["weight"], dict_info["record"]["maxconn"]) if not record_list: return else: if current_record not in record_list: return else: del record_list[record_list.index(current_record)] if len(record_list) > 0: record_list.insert(0, backend_title) with open("data.txt", "r") as read_file, open("new_data.txt", "w") as write_file: flag = False has_write = False for line in read_file: line = line.strip() if line == backend_title: flag = True continue if flag and line.startswith("backend"): flag = False if not flag: write_file.write(line + " ") else: if not has_write: for i in record_list: if i.startswith("backend"): write_file.write(i + " ") else: write_file.write("%s%s " % (8 * " ", i)) has_write = True #主函数 if __name__ == "__main__": flag = True print("1:查询, 2:添加, 3:删除") while flag: #确保输入为:1、2、3 num = input("请输入序号:") if num in ["1", "2", "3"]: flag = False data = input("请输入内容:") if num == "1": #输入1调用查询函数 list_data = fetch(data) for i in list_data: print(i) else: #输入为2、3调用添加和删除函数 dict_data = json.loads(data) #把输入的数据转换为字典 if num == "2": #调用添加函数 add(dict_data) else: #调用删除函数 remove(dict_data)