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

新手上路。。。。还是需要多学习啊。。。。
小实验3:实现haproxy的增、删、查的更多相关文章
- [ python ] 项目:haproxy配置文件增删改查
1. 开发要求 实现对 haproxy.cfg 增删改查操作 2. 程序介绍 # 作者:hkey # 博客地址:https://www.cnblogs.com/hukey/p/9288279.html ...
- PHP数据库的 增 删 查
一.匹配数据库登录 步骤: 1.做一个普通的登录界面,注意提交方式为post. <!--登录界面--> <form action="chuli.php" meth ...
- WindowsForm 增 删 查 改
首先是连接数据库 在数据库里写代码 建立一个数据库下面是代码 create database JinXiaoCun go use JinXiaoCun go create table users ( ...
- HBase java API 的使用范例(增,删,查,扫描)
编辑pom.xml <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase ...
- java web数据库的增删改查详细
本次课上实验是完成数据库的增删改查. 包括增加用户信息.删除用户信息.多条件查找用户信息.修改用户信息(主要是复选框单选框等的相关操作.) 下面下看一下各个界面的样子. 总页面:显示全部页面:增加页面 ...
- python基础中的四大天王-增-删-改-查
列表-list-[] 输入内存储存容器 发生改变通常直接变化,让我们看看下面列子 增---默认在最后添加 #append()--括号中可以是数字,可以是字符串,可以是元祖,可以是集合,可以是字典 #l ...
- C# ADO.NET (sql语句连接方式)(增,删,改)
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 好用的SQL TVP~~独家赠送[增-删-改-查]的例子
以前总是追求新东西,发现基础才是最重要的,今年主要的目标是精通SQL查询和SQL性能优化. 本系列主要是针对T-SQL的总结. [T-SQL基础]01.单表查询-几道sql查询题 [T-SQL基础] ...
- iOS FMDB的使用(增,删,改,查,sqlite存取图片)
iOS FMDB的使用(增,删,改,查,sqlite存取图片) 在上一篇博客我对sqlite的基本使用进行了详细介绍... 但是在实际开发中原生使用的频率是很少的... 这篇博客我将会较全面的介绍FM ...
随机推荐
- BZOJ 1801: [Ahoi2009]chess 中国象棋 [DP 组合计数]
http://www.lydsy.com/JudgeOnline/problem.php?id=1801 在N行M列的棋盘上,放若干个炮可以是0个,使得没有任何一个炮可以攻击另一个炮. 请问有多少种放 ...
- BZOJ 3585: mex [主席树]
3585: mex Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 787 Solved: 422[Submit][Status][Discuss] ...
- redis requires ruby version 2.2.2的解决方案
在执行gem install redis时 提示: gem install redis ERROR: Error installing redis: redis requires Ruby versi ...
- qt 移植到开发板
一.准备工作: 1.QT应用程序 2.工具链--->交叉工具链一安装,就会有标准的c库 3.扩展的第三方库(ARM)()触摸屏库(tslib.tar.gz) 4.QT库 二.使用交叉工具链编译t ...
- LocalMaxima_NOI导刊2009提高(1)
先打表,发现\(ans=\sum_{i=1}^n\frac{1}{i}\) 对于小数据可以直接打表 数据很大时,精度相对就比较宽松 欧拉-马斯刻若尼常数=调和级数-自然对数 调和级数为:\(\sum_ ...
- JavaScript使用点滴
JavaScript使用点滴 一.字符串替换的小插曲 遇到一个小插曲,想要把后台返回的字符串输出给前端视图,字符串中包含\n换行,需要使用javascript对其进行替换成<br />. ...
- GitHub中开启二次验证Two-factor authentication,如何在命令行下更新和上传代码
最近在使用GitHub管理代码,在git命令行管理代码时候遇到一些问题.如果开起了二次验证(Two-factor authentication两个要素认证),命令行会一直提示输入用户名和密码.查找了一 ...
- ApiManager搭建
piManager 作为一个Api 文档管理工具,而且是开源的,作为开发者使用,还是蛮不错的,整体的界面也很友好,下面就来看一下吧. 下面就来介绍下ApiManager在centos 6下的搭建过程吧 ...
- 聊聊Vue.js的template编译
写在前面 因为对Vue.js很感兴趣,而且平时工作的技术栈也是Vue.js,这几个月花了些时间研究学习了一下Vue.js源码,并做了总结与输出. 文章的原地址:https://github.com/a ...
- 拦截窗体关闭、最大、最小事件 - Winform
RT,不赘述,代码以下: const int WM_SYSCOMMAND = 0x112; const int SC_CLOSE = 0xF060; const int SC_MINIMIZE = 0 ...