文件的读取、修改、写入
知识点:不可以使用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()