用python实现快速更新配置

来源:互联网 发布:政府oa办公软件 编辑:程序博客网 时间:2024/06/14 19:57
#!/usr/bin/env python#name bearcatfly def fetch(backend):  # 查询函数    result = []  # 结果先设置空列表    with open("config", 'r', encoding='utf-8') as f:  # 以utf-8编码读取config文件        flag = False        for line in f:  # 一行一行读取            # 如果一行以backend开头并且这一行等于用户输入的backend信息,则flag设置为True            if line.strip().startswith("backend") and line.strip() == "backend " + backend:                flag = True                continue  # 继续执行下一句            # 接下来有两种情况,一种是有信息,另一种是没有信息,直接下一个backend            if flag and line.strip().startswith("backend"):                # 如果flag = True并且是以backend开头,直接退出                flag = False                break            if flag and line.strip():                # 如果flag = True并且不是以backend开头,这就是我们需要的信息                result.append(line.strip())  # 把line放在结果中    return resultdef add(backend, record):    record_list = fetch(backend)    if not record_list: #为什么要not,record.list是真,not+真为假,主要为了代码有简单到复杂        # backend不存在,无record        with open("config", 'r', encoding='utf-8') as old, open("config_new", 'w') as new:            for line in old:                new.write(line)            new.write("\nbackend " + backend + "\n")            new.write(" " * 8 + record + "\n")    else:        # backend 存在        if record in record_list:            # record已经存在            pass        else:            # backend 存在,record 不存在            record_list.append(record)            print(record_list)            with open("config", 'r') as old, open("config_new", 'w') as new:                flag = False                for line in old:                    if line.strip().startswith("backend") and line.strip() == "backend " + backend:  # 这边一个空格很关键                        flag = True                        new.write(line)                        # new.write("record")                        for temp in record_list:                            new.write(" " * 8 + temp + "\n")                    if flag and line.strip().startswith("backend"):                        flag = False                        new.write(line)                        continue                    if not flag and line.strip():                        new.write(line)bk = "www.hahha.org"rd = "server 100.1.7.96 100.1.7.96 weight 20 maxconn 3000"add(bk, rd)

原创粉丝点击