• 第三天作业


    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)
  • 相关阅读:
    九度OJ 1031:xxx定律 (基础题)
    九度OJ 1030:毕业bg (01背包、DP)
    九度OJ 1029:魔咒词典 (排序)
    九度OJ 1028:继续畅通工程 (最小生成树)
    九度OJ 1027:欧拉回路 (欧拉回路)
    九度OJ 1026:又一版 A+B (进制转换)
    九度OJ 1025:最大报销额 (01背包、DP)
    九度OJ 1024:畅通工程 (最小生成树)
    九度OJ 1023:EXCEL排序 (排序)
    九度OJ 1022:游船出租 (统计)
  • 原文地址:https://www.cnblogs.com/jp-mao/p/6399696.html
Copyright © 2020-2023  润新知