python之文件操作

文件的读取、修改、写入
知识点:不可以使用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()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值