对指定文件haproxy.conf的backend www.oldboy1.org进行增删改查。文件内容如下

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.oldboy1.org

server 101.1000.7.9 101.1000.7.9 weight 20 maxconn 30

server 2.2.2.7 2.2.2.7 weight 30 maxconn 4000

server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000

server 2.2.2.4 2.2.2.4 weight 30 maxconn 4000

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

用户输入的修改信息为

#[{'backend':'www.oldboy1.org','record':{'server':'2.2.2.4','weight':20,'maxconn':3000}},{'backend':'www.oldboy1.org','record':{'server':'2.2.2.5','weight':30,'maxconn':4000}}]

元素【0】为修改前,元素【1】为修改后

importosdeffetch(data):print('这是查询功能')print('用户查询的数据是%s'%data)

backend_data='backend %s'%data

with open('haproxy.conf','r',encoding='utf-8') as f1:

tag=False

ret=[]for read_line inf1:if backend_data==read_line.strip():#行末有换行符\n

tag =Truecontinue#跳入下一行

if tag and read_line.strip().startswith('backend'):#遇到下一个backend

break

iftag:

ret.append(read_line)print(read_line)returnretdefadd(data):print('添加')defchange(data):print('这是修改功能')

backend=data[0]['backend']#用户输入数据的0个元素是字典,key是backend

backend_data = 'backend %s' % backend #backend www.oldboy1.org

old_server_record = '%sserver %s %s weight %s maxconn %s\n' % (' ' * 8, data[0]['record']['server'],

data[0]['record']['server'],

data[0]['record']['weight'],

data[0]['record']['maxconn'])

new_server_record= '%sserver %s %s weight %s maxconn %s\n' % (' ' * 8, data[1]['record']['server'],

data[1]['record']['server'],

data[1]['record']['weight'],

data[1]['record']['maxconn'])

res=fetch(backend)print(res)if notres:return '你要修改的记录不存在'

if old_server_record not inres:return '你要修改的记录不存在'

else:

index=res.index(old_server_record) #通过value获取index

res[index]=new_server_record#修改的是fetch返回的res,还需要重新写入文件

res.insert(0,'%s\n'%backend_data) #fetch返回的res没有backend www.oldboy1.org头部

with open('haproxy.conf','r') as read_f,\

open('haproxy.conf_new','w') as write_f:

tag=False

has_write=False#是否改写

for read_line inread_f:if read_line.strip()==backend_data :#backend www.oldboy1.org

tag=Truecontinue #跳到下一行

if tag and read_line.startswith('backend'):

tag=Falseif not tag:#不是#backend www.oldboy1.org

write_f.write(read_line) #按照读的来写

iftag:if nothas_write:for recond in res:#把修改后的fetch返回的res写入新文件

write_f.write(recond)#把res写入

has_write=True#改写完了

os.rename('haproxy.conf','haproxy.conf.bak')

os.rename('haproxy.conf_new','haproxy.conf')defdelete(data):pass

if __name__=="__main__":

msg='''1:查询

2:添加

3:修改

4:删除

5:退出'''

print(msg)

msg_dict={'1':fetch,'2':add,'3':change,'4':delete,

}whileTrue:

choice=input('请输入你的选项:').strip()if not choice:continue

if choice=='5':breakdata=input('请输入你的数据:')if choice !=1:

data=eval(data)if int(choice)<6:

res=msg_dict[choice](data)print(res)else:print('请输入正确的选项')

python 文件修改记录_python基础-文件增删改查相关推荐

  1. python list增删改查_Python 基础list 增删改查 解析

    一 增加 1 append 增加到最后一个列表 li = [ 1,3,4 ,'wang',] li.append('wangyan') print(li) [1, 3, 4, 'wang', 'wan ...

  2. python字符串添加_python字符串的增删改查

    字符串增加 直接 + name = 'de8ug' city = 'beijing' info = name + ' ' + city info 'de8ug beijing' % 占位符替换 'na ...

  3. python 增删列表_python 列表的增删改查

    # -----------------------------增加 append insert li = ["Break", "19", "前端&qu ...

  4. 用Python+Mysql+MDUI实现的数据库增删改查列表操作及单,多文件上传实例

    用Python+Mysql+MDUI实现的数据库增删改查列表操作及单,多文件上传实例.web服务用flask框架,数据库操作用的pymysql框架.教程在我B站有的. 开源地址:https://git ...

  5. python中的切片能否修改元祖_Python列表的增删改查和元祖

    一.定义列表 1.names = ['mike','mark','candice','laular'] #定义列表 2.num_list = list(range(1,10)) #range生成1-1 ...

  6. python操作postgre库,批量进行增删改查和计时比较效率,封装好的普通增删改查和批量增删改查类拿来即用

    python操作postgre库,批量进行增删改查,封装类,拿来即用 1. 新建postgre.py文件,使用psycopg2封装普通增删改查和批量增删改查类 postgre.py import ps ...

  7. neo4j图数据库安装(mac)+neo4j集成springboot实现基础的增删改查

    目录 第一部分 mac安装neo4j 第二部分 neo4j集成springboot实现基础的增删改查 一.图数据库相关配置 二.业务逻辑 实体类 持久层 业务层 表现层 启动类 三.测试 附录: 第一 ...

  8. Mybatis基础:增删改查、模糊查询、多条件查询

    Mybatis基础:增删改查.模糊查询.多条件查询http://www.bieryun.com/3132.html 1.新建测试数据库,根据实体类属性创建 2.实体类 [java] view plai ...

  9. MySQL数据库基础表格——增删改查(下)

    ♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有收获,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易,人间真情 目录 MyS ...

最新文章

  1. CSS动画:有活力的链接下划线
  2. vue2.0 配置 选项 属性 方法 事件 ——速查
  3. [Node.js]常用工具
  4. 【工具】更新最新esp8266库离线安装包3.0.1、ESP32库离线安装包1.0.6
  5. [云炬创业管理笔记]第二章测试4
  6. AI理论知识基础(26)-机器学习常见损失函数, 共轭梯度法(2)
  7. jQuery和Prototype兼容问题
  8. android studio创建文件,如何在Android Studio中创建File Templates
  9. hough变换检测圆周_Python OpenCV 霍夫变换
  10. bert 是单标签还是多标签 的分类_标签感知的文档表示用于多标签文本分类(EMNLP 2019)...
  11. java_js_json_日期格式化
  12. 洛谷P4593 [TJOI2018]教科书般的亵渎(拉格朗日插值)
  13. jQuery Mobile 中文手册 Ajax开发版(2)
  14. Word VBA设置所有图表宽度并居中
  15. java中递归遍历文件夹下所有文件
  16. LM358恒流恒压原理
  17. 网页在线PS网站源码PHP 浏览器在线P图
  18. 奖励 CSDN 社区的领军人物
  19. C中 stdarg.h
  20. CUDA+ GTX1050ti电脑配置

热门文章

  1. 数据库笔记02:查询与统计数据
  2. 【练习手记】【多题合集】用树状数组做线段树练习1、2、3
  3. php 调用父类变量,PHP-通过实例化父类访问常量
  4. python rq asyncio_python异步IO-asyncio
  5. eds800变频器故障代码_干货|三菱变频器故障剖析,及严重故障和轻微故障判断技巧!...
  6. setautocommit(false) 还是自动提交了_Hexo和GitPages搭建博客并自动发布
  7. bzoj1015 [JSOI2008]星球大战 并查集
  8. 【OpenStack】【Nova】安装与配置详解 (1)
  9. python爬虫解析数据_Python爬虫入门知识:解析数据篇
  10. Unity中Temporal AA