日志格式
backend test.oldboy.orgb1
backend buy.oldboy.org
# 显示一级菜单
def p_1():
print('1:增加一条记录',' 2:删除一条记录')
# 显示二级菜单
def p_2():
print('1:test.oldboy.org',' 2:buy.oldboy.org')
def ins_del(ttype):
with open('file.txt','r+') as f: # 打开文件
r = f.readlines()
start = end = None
for i in r: # 循环取每一行
if int(pt) == 1:
if 'test.oldboy.org' in i: # 找开始位置
start = r.index(i)
elif i.strip() == '' and None != start: # 从开始位置,如果有空行就是结束位置
end = r.index(i,start)
break
elif 'buy.oldboy.org' in i and None != start: # 没有空行,就把类型二当结束位置
end = r.index(i,start)
break
else: # 类型二
if 'buy.oldboy.org' in i: # 找类型二开始位置
start = r.index(i)
elif i.strip() == '' and None != start: # 从开始位置,如果有空行就是结束位置
end = r.index(i,start)
break
else: # 如果是正常执行到这,说明end=None
if ttype == 1:
end = len(r) # 结束位置就是开始位置+1
if not '\n' in r[end - 1]:
r[end - 1] += '\n' # 没有结束行,说明开始行没有换行,所有在开始行尾部加个换行
else:
if int(pt) == 1: # 类型一区间在开始位置到开始位置+1
end = start + 1
else: # 类型二区间在开始位置到文件尾
end = len(r)
#if not '\n'in r[end]
if ttype == 1:
r.insert(end,tstr) # 在结束位置插入数据
f.seek(0) # 移动指针到首位置
f.writelines(r) # 开始将新内容,覆盖老内容(覆盖只会比原来行数多,所有不需要清空处理)
p_1() # 显示一级菜单
else:
for i in r[end: start:-1]: # 倒着循环删除行
if 'server' in i: # 数据行里包含server 就是有效行
r.pop(r.index(i)) # 删除这一行
break
if ttype == 2:
with open('file.txt','w') as f: # 因为删除比源文件少内容,所以要用"w"清空内容,重写,否则会多数据
f.writelines(r)
p_1()
p_1()
while True:
pt = input('选择操作类型:')
if pt == 'q': # 退出
print('退出操作')
exit()
elif pt.isdigit() and int(pt) > 0 and int(pt) < 3: # 输入是否有效
p_2()
if int(pt) == 1: # 添加
while True:
pt = input('选择要添加的类型:')
if pt == 'q': # 退出
print('退出操作')
exit()
elif pt == 'b': # 返回上一级
p_1()
break
elif pt.isdigit() and int(pt) > 0 and int(pt) < 3: # 输入是否有效
server = input('输入server信息:')
weight = input('输入weight信息:')
maxcoon = input('输入maxcoon信息:')
tstr = '\tserver %s weight %s maxcoon %s\n' % (
server,weight,maxcoon) # 拼接字符
ins_del(1)
break # 返回到一级菜单
else:
print('未定义 %s 操作' % pt)
else: # 删除
while True:
pt = input('选择要删除的类型:')
if pt == 'q': # 退出
print('退出操作')
exit()
elif pt == 'b': # 返回上一级
p_1()
break
elif pt.isdigit() and int(pt) > 0 and int(pt) < 3: # 输入是否有效
ins_del(2)
break
else:
print('未定义 %s 操作' % pt)
else:
print('未定义 %s 操作' % pt)