文件的读取、修改、写入
知识点:不可以使用for循环生成变量,替代方式:将每次循环生成的数据添加到列表中,再对列表进行操作
例子:根据输入的环境名称操作hosts文件,注释掉其他环境
#env1
127.0.0.1
127.0.0.2
#env2
127.0.0.3
127.0.0.4
#env3
127.0.0.5
127.0.0.6
def choose_env():
env = input("请输入环境名称:")
key = '#'+env+'\n'
host_list = []
env_list = []
with open('hosts.txt',mode='r') as fr:
# 将每个环境切成一个列表
l = fr.readlines()
n = l.count('\n')
# print('n',n)
for i in range(n):
host_list.append(l[:l.index('\n')+1])
l = l[l.index('\n')+1:]
host_list[i].remove('\n')
host_list.append(l)
# 如果输入不存在的环境名称,提示并退出
for i in range(len(host_list)):
env_list.append(host_list[i][0])
# print(env_list)
if key not in env_list:
print("输入错误,环境不存在!")
return
# 寻找目标环境
for i in range(len(host_list)):
# 如果存在目标环境且被注释,解除注释
if key in host_list[i]:
if host_list[i][1].startswith('#'):
for j in range(1,len(host_list[i])):
host_list[i][j] = host_list[i][j].replace('#','')
# 如果非目标环境且已注释,跳过
if key not in host_list[i] and host_list[i][1].startswith('#'):
pass
# 如果非目标环境且未注释
if key not in host_list[i] and not host_list[i][1].startswith('#'):
# 对列表进行注释
for j in range(1, len(host_list[i])):
host_list[i][j] = '#'+host_list[i][j]
with open('hosts.txt','w') as fw:
for i in range(len(host_list)):
for j in range(len(host_list[i])):
fw.write(host_list[i][j])
if i+1<len(host_list):
fw.write('\n')
fw.close()
print("修改成功!")
choose_env()