小实验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() 一下会不会能执行呢? 【待会回家上图。。】

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

优质内容筛选与推荐>>
1、Java 存储和读取 oracle CLOB 类型字段
2、stackoverflow调查:对程序员最具影响的书籍
3、springmvc中的page
4、Android Studio开发入门-引用jar及so文件
5、使用PDO持久化连接


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号