zoukankan      html  css  js  c++  java
  • 小实验3:实现haproxy的增、删、查

    # Author:Alano
    # -*- conding:utf-8 -*-
    # 这里有一个问题:为什么手动删除了haproxy_new中的内容,但是执行添加命令的时候依然显示数据已经存在?
    
    f = open("haproxy","r")
    f_new = open("haproxy_nw","w",encoding="utf-8")
    b = f.readlines()
    
    option = ("1、请输入搜索的地址:","2、请输入增加的内容:","3、请输入删除的内容:")
    
    def f_back():
        for i in range(1,100):
            k = input('输入q返回上一级菜单 >>>')
            if k!='q':
                i += 1
            else:
                break
    while True:
        for i in option:
            print(i)
        choice = input("请选择操作方式:序列号>>>")
        if choice == "1":
            data = input("请输入搜索地址:")
            address = "backend %s\n"%data            # 利用字符串拼接,定义一个变量.
            if address in b:                     # 利用列表的下标来定位位置,然后通过下标打印内容。
                index_add = b.index(address)
                print(b[index_add],b[index_add+1])
            if address not in b:
                print("您查找的内容不存在")
            f_back()
    
        if choice =="2":
            data = input("输入增加内容,格式{'backend':,'record':{'server':,'weight':,'maxconn':}} >>> ")        # 输入一条字典信息
            data_eval = eval(data)                           
            # 通过列表计数器来判断输入的内容是否在列表中存在,如果计数器为0则不存在,如果计数器不为0则存在。
            f_find = b.count("backend %s\n"%data_eval['backend'])
            # 如果backend后的内容在文件中不能找到则新增。
            if f_find == 0:
                for line in b:
                    f_new.write(line)                             # 将输入的内容通过字符串拼接的形式写入文件中
                f_new.write("\nbackend ")
                f_new.write(data_eval["backend"])
                f_new.write("\n        server %s weight %s maxconn %s"\
                            %(data_eval["record"]["server"],data_eval["record"]["weight"]
                            ,data_eval["record"]["maxconn"]))
    
                print("新增一条数据")
            if f_find != 0:
                print("您添加的内容已经存在")
            f_back()
    
        if choice =="3":
            data = input("请输入删除内容 >>> ")
            data_eval = eval(data)
            f_find = b.count("backend %s\n"% data_eval['backend'])
            if f_find != 0:
                del data_eval
                print("删除一条内容")
            else:
                print("您输入的内容文件中不存在")
            f_back()
        f.close()
        f_new.close()

    这里有个疑问,我自己也不知道怎么回事,在执行插入新增项之后返回初始菜单,再进行插入同样数据,不是应该报错“您添加的内容已经存在”。。。

    下面报错I\O operation on closed file,需要关闭文件才能放出释放内存,那用flush() 一下会不会能执行呢?  【待会回家上图。。】

    新手上路。。。。还是需要多学习啊。。。。

    Up the wind need you fight !
  • 相关阅读:
    去掉Win10中的“此电脑”中的6个默认文件夹的方法
    Fastboot驱动及安装
    Fastboot驱动及安装
    JNI+NDK编程总结
    JNI+NDK编程总结
    20194742自动生成四则运算题第一版报告
    读构建之法现代软件工程随笔
    想法或创意
    ubuntu控制台乱码
    Java 为什么不支持多继承?
  • 原文地址:https://www.cnblogs.com/xiapu5150/p/7207374.html
Copyright © 2011-2022 走看看