Python小练习三

本文介绍了一个使用Python编写的交互式脚本,该脚本允许用户在不使用文本编辑器的情况下直接修改配置文件中的特定部分。通过简单的命令行交互,用户可以定位到配置文件内的目标配置项并进行更新。

题目要求

给出下列文档,但求用户可以不用户文本编辑器的情况下修改配置文档
1.只修改backend的配置就可以
2.用户需要输入backend,在输入域名、最后输入具体配置

流程图

这里写图片描述

代码

#!/usr/bin/env python3

the_key = input("请输入需要修改的标识1")
the_value = input("请输入需要修改的标识2")
the_content = input("请输入需要修改的内容")

with open("setting","r+") as f:
    while 1:
        line = f.readline() #从第一行开始逐行读取文件
        if not line:  #判断文件时候读到了最后一行
            #将用户输入的内容写入文件
            f.write("\n\n%s %s\n        %s" % (the_key, the_value, the_content))
            break
        #判断用户输入的标识1在文件中是否出现
        if the_key in line and the_key == line.split()[0]:
            # 判断用户输入的标识2在文件中是否出现
            if the_value == line.split()[1]:
                next_line = len(f.readline()) #获取需要修改的行的长度
                t_now = f.tell()  #记录现在指针的位置(读完一行后指针会在下一行的开始)
                line_start = t_now-next_line  #当前位置减去一行的长度获取上一行的起始位置
                # 生成一个和需要修改的行的长度一样的空格 -1试为了保留换行符
                spacing = " " * (next_line - 1)  
                f.seek(line_start)
                f.write(spacing)
                f.seek(line_start)
                f.write("        %s\n" % (the_content))
                break

原文件

global
        log 127.0.0.1 local2
        daemon
        maxconn 256
        log 127.0.0.1 local2 info
defaults
        log global
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        option  dontlognull

listen stats :8888
        stats enable
        stats uri       /admin
        stats auth      admin:1234

frontend oldboy.org
        bind 0.0.0.0:80
        option httplog
        option httpclose
        option  forwardfor
        log global
        acl www hdr_reg(host) -i www.oldboy.org
        use_backend www.oldboy.org if www

backend www.oldboy.org
        server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000

backend buy.oldboy.org
        server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值