python-open函数操作实例
一、这个是源配置文件:
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.oldboy.org
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
原配置文件
二、目的:增删改查操作
1、查
输入:www.oldboy.org
获取当前backend下的所有记录
2、新建
输入:
arg = {
'bakend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
}
3、删除
输入:
arg = {
'bakend': 'www.oldboy.org',
'record':{
'server': '100.1.7.9',
'weight': 20,
'maxconn': 30
}
}
也就是需求
三、Demo实例
#!/usr/bin/env python
# -*- coding:utf-8 -*-
import json
import os
def fetch(backend):
backend_title = 'backend %s' % backend
record_list = []
with open('ha') as obj:
flag = False
for line in obj:
line = line.strip()
if line == backend_title:
flag = True
continue
if flag and line.startswith('backend'):
flag = False
break
if flag and line:
record_list.append(line)
return record_list
def add(dict_info):
backend = dict_info.get('backend')
record_list = fetch(backend)
backend_title = "backend %s" % backend
current_record = "server %s %s weight %d maxconn %d" % (dict_info['record']['server'], dict_info['record']['server'], dict_info['record']['weight'], dict_info['record']['maxconn'])
if not record_list:
record_list.append(backend_title)
record_list.append(current_record)
with open('ha') as read_file, open('ha.new', 'w') as write_file:
flag = False
for line in read_file:
write_file.write(line)
for i in record_list:
if i.startswith('backend'):
write_file.write(i+'\n')
else:
write_file.write("%s%s\n" % (8*" ", i))
else:
record_list.insert(0, backend_title)
if current_record not in record_list:
record_list.append(current_record)
with open('ha') as read_file, open('ha.new', 'w') as write_file:
flag = False
has_write = False
for line in read_file:
line_strip = line.strip()
if line_strip == backend_title:
flag = True
continue
if flag and line_strip.startswith('backend'):
flag = False
if not flag:
write_file.write(line)
else:
if not has_write:
for i in record_list:
if i.startswith('backend'):
write_file.write(i+'\n')
else:
write_file.write("%s%s\n" % (8*" ", i))
has_write = True
os.rename('ha','ha.bak')
os.rename('ha.new','ha')
def remove(dict_info):
backend = dict_info.get('backend')
record_list = fetch(backend)
backend_title = "backend %s" % backend
current_record = "server %s %s weight %d maxconn %d" % (dict_info['record']['server'], dict_info['record']['server'], dict_info['record']['weight'], dict_info['record']['maxconn'])
if not record_list:
return
else:
if current_record not in record_list:
return
else:
del record_list[record_list.index(current_record)]
if len(record_list) > 0:
record_list.insert(0, backend_title)
with open('ha') as read_file, open('ha.new', 'w') as write_file:
flag = False
has_write = False
for line in read_file:
line_strip = line.strip()
if line_strip == backend_title:
flag = True
continue
if flag and line_strip.startswith('backend'):
flag = False
if not flag:
write_file.write(line)
else:
if not has_write:
for i in record_list:
if i.startswith('backend'):
write_file.write(i+'\n')
else:
write_file.write("%s%s\n" % (8*" ", i))
has_write = True
os.rename('ha','ha.bak')
os.rename('ha.new','ha')
if __name__ == '__main__':
"""
print '1、获取;2、添加;3、删除'
num = raw_input('请输入序号:')
data = raw_input('请输入内容:')
if num == '1':
fetch(data)
else:
dict_data = json.loads(data)
if num == '2':
add(dict_data)
elif num == '3':
remove(dict_data)
else:
pass
"""
#data = "www.oldboy.org"
#fetch(data)
#data = '{"backend": "tettst.oldboy.org","record":{"server": "100.1.7.90","weight": 20,"maxconn": 30}}'
#dict_data = json.loads(data)
#add(dict_data)
#remove(dict_data)
demo
转载于:https://www.cnblogs.com/fuyuteng/p/8485004.html
python-open函数操作实例相关推荐
- python 列表操作详解,Python列表解析操作实例总结
本文实例讲述了Python列表解析操作.分享给大家供大家参考,具体如下: 列表解析 Python 的强大特性之一是其对 list 的解析,它提供一种紧凑的方法,可以通过对 list 中的每个元素应用一 ...
- Python回调函数用法实例
什么是回调函数? 我们绕点远路来回答这个问题. 编程分为两类:系统编程(system programming)和应用编程(application programming).所谓系统编程,简单来说,就是 ...
- 【Python】函数递归实例之字符串反转、汉诺塔问题分析
递归的定义 函数定义中调用函数自身的方式 两个特性: 链条:计算过程存在递归链条 例如,n!=n*(n-1)!,n!与(n-1)!就构成了递归链条 基例:基础的实例,存在一个或多个不需要再次递归的基例 ...
- python对文件操作实例_Python对文件文件夹的操作实例
代码背景: 最近老看视频教程,我需要知道一部教程,需要多久能看完.win下文件夹里,多选视频文件,可以直接在属性中查看一共需要的时间.不过在网上下载的很多视频教程每一章都分布在不同的文件夹下,无法快捷 ...
- 中imshow函数用法_5 OpenCV几个函数操作实例
前面使用OpenCV创建了一个简单的视频播放器.下面做点更有趣的事情. 许多基本的视觉任务涉及将滤镜应用于视频.下面修改程序,在播放视频时,对其进行简单的操作. 一个简单的操作是平滑图像,通过高斯或其 ...
- python unitest框架,Python unittest框架操作实例解析
操作步骤 导入框架,import unitest 测试类必须继承类:.class 类名(unittest.TestCase): 在类中所有定义testXXX(区分大小写)开头的函数都是可执行的测试用例 ...
- python asyncio回调函数_python回调函数用法实例分析
python回调函数用法实例分析 本文实例讲述了python回调函数用法.分享给大家供大家参考.具体分析如下: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步 ...
- python列表切片图解_Python列表切片操作实例总结
本文实例讲述了Python列表切片操作.分享给大家供大家参考,具体如下: 切片指的是列表的一部分. 1 基本用法 指定第一个元素和最后一个元素的索引,即可创建切片 .Python 会在到达指定的第二个 ...
- python编程遍历_Python字典遍历操作实例小结
本文实例讲述了Python字典遍历操作.分享给大家供大家参考,具体如下: 1 遍历键值对 可以使用一个 for 循环以及方法 items() 来遍历这个字典的键值对. dict = {'evapora ...
- python input函数怎么用_Python input函数使用实例解析
这篇文章主要介绍了Python input函数使用实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 函数定义 def input(*args, * ...
最新文章
- java用if判断输入字符_JAVA中如何判断一个输入是数字还是字符串
- Impala手动安装
- 邮件联系人,如何恕不部分字母就能显示邮件联系人
- OpenCV测试程序
- MDK调试:设置断点处,代码运行的次数
- 大数据(9) - Flume的安装与使用
- 20172303 2018-2019-1《程序设计与数据结构》第7周学习总结
- cart算法_ID3、C4.5、CART决策树算法
- springboot+shiro+jwt
- linux 桌面时间,桌面锁屏时钟下载-桌面锁屏时钟appv2.8.1-Linux公社
- 迅为i.MX6Q开发板-红外 hs0038 测试
- plist序列帧合图导出单独的图片
- 基于s32k146的IO口模拟串口
- 去雾论文A real-time fast defogging system to clear the vision of driver in foggy highway using minimu...
- mysql 1236 bug_MySQL 1236错误解决方法
- 六月,授你以鱼,再授你以渔
- vulnhub靶场,Monitoring
- PCB学习笔记——DRC检查
- (已解决)ModuleNotFoundError: No module named ‘pycocotools‘
- canfd收不到数据_CAN-FD协议浅析