天天看点

配置文件增删改查程序

配置文件增删改查程序:

一、 程序要求:

1、 对配置文件进行增删改查操作

2、 可增删任意一行配置文件,可改任意子配置

二、 程序流程图:

四个功能定义为四个函数,分别有对应的流程图

1、增

配置文件增删改查程序

2、删

配置文件增删改查程序

3、改

配置文件增删改查程序

4、查

配置文件增删改查程序

三、 Readme

1、 程序定义了四大功能模块:增删改查;三个辅助模块:1、将配置文件写进列表,2、将列表转成字典,3、将字典写入配置文件(全量更新配置文件)

2、 程序工作时,会将配置文件转成字典进行各种操作。有两点需要说明:1、配置文件直接转成字典的方法还没想到,2、配置文件最后需要流出两行空行,否则列表转字典时会报出列表范围超出的错误。配置文件模板在最后的附件中

3、 对文件的修改会在增删改退出后写入配置文件(全量更新配置文件)

四、 程序代码及注释

#!/usr/bin/env python
#--author lisheng--

def config_to_list():
    #将配置文件转成列表
    view = []
    f = open("ceshi.txt", "r")
    for i in f:
        view.append(i.rstrip())
    f.close()
    return view

def config_to_dict():
    #将列表转成字典
    view = config_to_list()
    k = 1
    view1 = {}
    for i1 in view:
        if not i1.startswith("        "):
            while True:
                if view[view.index(i1) + k].startswith("        "):
                    view1["%s" % (i1)] = []
                    while True:
                        if view[view.index(i1) + k].startswith("        "):
                            view1["%s" % (i1)].append("{r}".format(r=view[view.index(i1) + k]))
                        else:
                            break
                        k += 1
                else:
                    break
            k = 1
    return view1

def write_config():
    #将配置文件的修改写回配置文件中(重新刷新一遍)
    f = open("ceshi_del.txt", "w")
    for i in view1:
        f.write("%s\n" % (i))
        for i1 in view1[i]:
            f.write("%s\n" % (i1))
        else:
            f.write("\n")
    f.close()

view = config_to_list()
view1 = config_to_dict()

def luukup_config():
    #查看配置
    while True:
        for l1 in view1:
            print(l1)
        x = input("(输入“q”可以退出)输入要查询的父配置名称:")
        if "backend %s" % (x) in view1:
            for l11 in view1["backend %s" % (x)]:
                print(l11)
        if x in view1:
            for l11 in view1[x]:
                print(l11)
        elif x == "q":
            break

def update_config():
    #修改配置
    while True:
        for l1 in view1:
            print(l1)
        x = input("(输入“q”可以退出)输入父配置名称:")
        if x in view1:
            while True:
                for l2 in view1[x]:
                    print(l2)
                y = "        %s" % (input("待修改项:"))
                if y in view1[x]:
                    w = "        %s" % (input("目标修改项:"))
                    z = view1[x].index(y)
                    view1[x][z] = w
                elif y.strip() == "q":
                    break
        elif x == "q":
            break
    write_config()

def add_config():
    #增加配置
    while True:
        for l1 in view1:
            print(l1)
        x = input("(输入“q”可以退出)输入想要增加的父配置名称:")
        if x in view1:
            while True:
                for l2 in view1[x]:
                    print(l2)
                y = "        %s" % (input("新增项:"))
                if y.strip() == "q":
                    break
                elif y in view1[x]:
                    pass
                else:
                    view1[x].append("%s" % (y))
        elif x == "q":
            break
        else:
            view1["%s" % (x)] = []
            while True:
                for l23 in view1[x]:
                    print(l23)
                y = "%s" % (input("父项中新增的子配置项:"))
                if y == "q":
                    break
                elif "        %s" % (y) in view1[x]:
                    pass
                else:
                    view1[x].append("        %s" % (y))
    write_config()

def del_config():
    #删除配置
    while True:
        x = input("1.删除父配置\n2,删除子配置\n(输入“q”可以退出)>>>")
        if x == "1":
            while True:
                for l1 in view1:
                    print(l1)
                y = input("(输入“q”可以退出)输入要删除的父配置名称:")
                if y in view1:
                    view1.pop("%s" % (y))
                elif y == "q":
                    break
        if x == "2":
            while True:
                for l1 in view1:
                    print(l1)
                y = input("(输入“q”可以退出)输入要进入的父配置名称:")
                if y in view1:
                    while True:
                        for l2 in view1[y]:
                            print(l2)
                        z = input("(输入“q”可以退出)输入要删除的子配置名称:")
                        if "        %s" % (z) in view1[y]:
                            view1[y].remove("        %s" % (z))
                        elif z == "q":
                            break
                elif y == "q":
                    break
        elif x == "q":
            break
    write_config()

while True:
    u = input("1.查询配置\n2,修改配置\n3.增加配置\n4,删除配置\n(输入“q”退出,输入数字选择相应操作)>>>")
    if u == "1":
        luukup_config()
    elif u == "2":
        update_config()
    elif u == "3":
        add_config()
    elif u == "4":
        del_config()
    elif u == "q":
        break
           

五、 附件

配置文件模板

global

log 1.1.1.1 local2

daemon

maxconn 256

log 192.168.1.1 local2 info

defaults

log global

home http

timeout connet 6ms

timeout client 50000ms

timeout server 50000ms

option dontlognull

listen stats:8888

stats enable

stats uri /admin

stats auth admin:1234

stats enable1

stats auth admin:12

frontend oldboy.org

bind 0.0.0.0:80

option httplog

option httpsclose

option forwardfor

log global

acl www hdr_reg(host) -i www.oldboy.org

use_backend www.oldboy.org if www

use_backend www.oldboy.org if ftp

backend www.oldboy.org

server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000

server 100.1.7.8 100.1.7.8 weight 20 maxconn 3000

server 100.1.7.7 100.1.7.7 weight 20 maxconn 3000

backend www.oldboy1.org

server 100.1.7.11 100.1.7.11 weight 20 maxconn 3000

backend www.ls.com

server 100.1.7.21 100.1.7.21 weight 20 maxconn 3000

server 100.1.7.22 100.1.7.22 weight 20 maxconn 3000

server 100.1.7.11 100.1.7.11 weight 20 maxconn 3000

www.123.com

server 100.1.7.2 100.1.7.2 weight 20 maxconn 3000

server 100.1.7.3 100.1.7.3 weight 20 maxconn 3000

server 100.1.7.2 100.1.7.3 weight 20 maxconn 3000

www.ll.com

server 100.1.7.7 100.1.7.7 weight 20 maxconn 3000