配置文件增删改查程序:
一、 程序要求:
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