python基础-文件操作

来为一个配置文件进行增删改查的基本操作

需求:

需求:

查询功能:
    当用户输入www.ali.org用户信息后,打印对应的server信息:
        server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
        server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
        server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000

增加功能:

	当用户输入{"backend":"www.ali.org","record":{"server":1111,"weight":2222,"maxconn":3333}}

	在www.ali.org下增加一条server信息,即文件中:
backend www.ali.org
	server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333


删除功能
    当用户输入{"backend":"www.ali.org","record":{"server":1111,"weight":2222,"maxconn":3333}}
	会将www.ali.org下的server 1111 weight 2222 maxconn 3333删除,
	在文件中如下:
backend www.ali.org
	server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333


修改功能:
    当用户输入{"backend":"www.ali.org","record":{"server":0000,"weight":0000,"maxconn":0000}}

backend www.ali.org
	server 0000 weight 0000 maxconn 0000

  

配置文件:

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.ali.org
        use_backend www.ali.org if www

backend www.oldboy1.org
        server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
        server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
        server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
backend www.oldboy2.org
        server 3.3.3.3 3.3.3.3 weight 20 maxconn 3000
backend www.oldboy20.org
        server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333

  

对文件对操作:

while True:

    print("1:增加")
    print("2:删除")
    print("3:修改")
    print("4:查看")


    number=input("input your namber:").strip()
    f_read=open("haproxy.conf",mode="r+", encoding="utf8")
    f_d=open("haproxy_delete.conf",mode="w", encoding="utf8")   #删除文件所操作的文件
    f_a=open("haproxy_add.conf",mode="w", encoding="utf8")   #增加文件所操作的文件
    f_m=open("haproxy_modify.conf",mode="w", encoding="utf8")   #修改文件所操作的文件

    flag = False
    add_flag = False
    list = []  #查询放入的列表
    d_list = []   #删除放入的列表
    a_list=[]
    m_list=[]

    if number=='4':
        print("look")
        look_input=input(">>:").strip()
        for line in f_read:
            if line.startswith("backend") and look_input in line:  # 1,信息匹配
                flag = True
                continue
            if flag and line.startswith("backend"):  # 3,结束
                break
            if flag:
                list.append(line.strip())  # 2,增加信息
        for i in list:
            print(i)

    elif number =='3':
        print("modify")
        mo_flag = False
        mo_input = input(">>").strip()
        print(mo_input)
        mo_input = eval(mo_input)
        print(mo_input)
        str_mo = "server " + str(mo_input["record"]["server"]) + " weight " + str(
            mo_input["record"]["weight"]) + " maxconn " + str(mo_input["record"]["maxconn"])
        print(str_mo)

        for line in f_read:
            if line.startswith("backend") and str(mo_input["backend"]) in line:
                m_list.append(line)
                mo_flag = True
                continue
            elif mo_flag and line.startswith("backend"):
                m_list.append(line)
                mo_flag=False

            elif mo_flag:
                # print(mo_flag)
                m_list.append("\t\t"+str_mo+"\n")
            elif mo_flag and line.count('\n')==len(line):
                continue
            else:
                m_list.append(line)

        # print(m_list)
        for i in m_list:
            f_m.write(i)
        f_m.close()


    elif number == '2':
        print("delete")
        del_flag=False
        del_input = input(">>").strip()
        del_input = eval(del_input)
        str_del = "server " + str(del_input["record"]["server"]) + " weight " + str(
            del_input["record"]["weight"]) + " maxconn " + str(del_input["record"]["maxconn"])
        print(str_del)
        for line in f_read:
            if str(del_input["backend"]) in line and line.startswith("backend"):
                d_list.append(line)
                del_flag=True
                continue
            elif del_flag and str_del in line:
                continue
            else:
                d_list.append(line)
        # print(d_list)
        for i in d_list:
           f_d.write(i)
        f_d.close()





    elif number == '1':
        print("add")



        add_input = input(">>").strip()
        add_input = eval(add_input)
        str_add = "\t\tserver " + str(add_input["record"]["server"]) + " weight " + str(
            add_input["record"]["weight"]) + " maxconn " + str(add_input["record"]["maxconn"])+"\r\n"
        # print(str_add)
        for line in f_read:
            if line.startswith("backend") and str(add_input["backend"]) in line:
                add_flag = True
                a_list.append(line)
                # a_list.append("\n" + str_add)  在记录前插入
                continue
            elif add_flag:
                print(add_flag)
                a_list.append(line)

            else:
                a_list.append(line)

        # a_list.append("\n" + str_add)
        for i in a_list:
            f_a.write(i)
        f_a.close()


    # {"backend": "www.ali.org", "record": {"server": 1111, "weight": 2222, "maxconn": 3333}}


    # server 1111 weight 2222 maxconn 3333

    # {"backend": "www.ali.org", "record": {"server": 0000, "weight": 0000, "maxconn": 0000}}

  

 

空行判断

with open("大宗师诗号" ,mode="r",encoding="utf8") as fr:
    for line in fr:
        print(line.count("\n"),len(line))

  

 

posted @ 2017-09-08 15:45  Adamanter  阅读(88)  评论(0编辑  收藏  举报