一.需求分析

  1. 有查询,删除,添加的功能
  2. 查询功能:查询则打印查询内容,如果不存在也要打印相应的信息
  3. 删除功能:查询到要删除内容则删除,打印信息。
  4. 添加功能:同上。

二.流程图

三.代码实现

  本程序主要分成两部分,接口部分与主函数处理部分,接口部分主要是用于编写三个接口,添加、删除、查询接口,此部分程序存储在Data_Deal.py函数中,主函数程序则执行系统的主循环逻辑,主要是上图流程图中的接口调用部分,此部分程序主要在Data_Change.py中实现,话不多说,上代码:

  Data_Deal.py函数程序代码如下:

import  sys
def Check_Backend():
#数据查询接口
Backend = str(input("输入要查询的Backend :"))
Backend_split = 'backend '+Backend+'\n'#根据输入内容组成要查询的字符串
T =True
with open('song.txt','r') as f:#文件循环
for line in f:
if Backend_split in line :#条件判断
sys.stdout.write(line)
T= False
continue
if T==False:
sys.stdout.write(line)
break
if T ==True:
print("文件不存在 !") def Add_Backend():
#数据添加接口
T =True
msg =eval(input("输入要存入的数据 :"))#字符串转换成列表,这里注意eval函数,此函数可以将字符串转换成字典,前提是字符串内容是一个字典
with open('song.txt','a+') as f:#文件循环
f.seek(0)#移动文件指针
for line in f:
if "backend "+msg["backend"]+'\n'== line:
print("当前Backend已存在,存入失败 !")
T = False
break
if T == True:
stradd = '\nbackend '+msg['backend']+'\n'+'\t'.expandtabs()+'server '+\
msg['record']['server']+' weight '+str(msg['record']['weight'])+' maxconn '+str(msg['record']['maxconn'])+'\n'#组帧,写入数据要按照一定格式转换成字符串
f.write(stradd)
print("添加成功 !") def Del_Backend():
#数据删除接口
local = 0
T = False
F = False
Num=0
msg =eval(input("输入要删除的数据 :"))#字符串转换成列表
f = open('song.txt', 'r+')#读写模式打开文件
lines = f.readlines()#一次读出所有行
f.seek(0)#移动文件指针
f.truncate()#清除文件内容
for i,line in enumerate(lines):
if T==True:
Num+=1
if Num>=2:
T=False
print("删除成功 !")
F =True
else:
continue
if line == 'backend '+msg['backend']+'\n':
T =True
Num=0
continue
f.write(line)#逐行写入文件,如果遇到要删除的内容则不写入
if F==False:
print("数据库中没有此条数据,删除失败!")

  此文件的读写要特别读写后的读写指针的位置,文件的操作如果读写指针有误可能导致文件出错,删除接口要特别注意,本函数使用较为笨拙的方案,一次读出所有数据然后比对写入,这种方案的前提是文件相对较小,如果大文件的读写删除不建议使用此方法。

  Data_Change.py程序代码如下:

while True:
msg = input("1.查询\n2.删除\n3.添加\n,输入q退出程序,请输入你的选择 :")
if msg.isdigit():
msg=int(msg)
if msg==1:
Check_Backend()
elif msg==2:
Del_Backend()
elif msg==3:
Add_Backend()
else:
pass
elif msg=='q':
break
else:
pass

  haproxy文件文本内容如下:

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 weight 20 maxconn 30

backend www.koujie.org
    server 100.1.7.9 weight 2000 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
}
}

  

python编辑修改haproxy配置文件--文件基础操作的更多相关文章

  1. Python文件基础操作(IO入门1)

    转载请标明出处: http://www.cnblogs.com/why168888/p/6422270.html 本文出自:[Edwin博客园] Python文件基础操作(IO入门1) 1. pyth ...

  2. 小白学 Python(23):Excel 基础操作(上)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  3. 小白学 Python(24):Excel 基础操作(下)

    人生苦短,我选Python 前文传送门 小白学 Python(1):开篇 小白学 Python(2):基础数据类型(上) 小白学 Python(3):基础数据类型(下) 小白学 Python(4):变 ...

  4. s12-day03-work01 python修改haproxy配置文件(初级版本)

    #!/usr/local/env python3 ''' Author:@南非波波 Blog:http://www.cnblogs.com/songqingbo/ E-mail:qingbo.song ...

  5. python flask学习(1)与Git基础操作

    今天从简单的flask开始完成Flask web开发的学习.今天学习了Git和GitHub项目的提交. Git尝试提交过程中出现了"Could not read from remote re ...

  6. Python3.5 day3作业二:修改haproxy配置文件。

    需求: 1.使python具体增删查的功能. haproxy的配置文件. global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 lo ...

  7. Python入门笔记(16):对文件的操作(2)

    一.文件系统 从系统角度来看,文件系统是对文件存储器空间进行组织和分配,负责文件存储并对存入的文件进行保护和检索的系统.具体地说,它负责为用户建立文件,存入.读出.修改.转储文件,控制文件的存取,当用 ...

  8. Python入门笔记(15):对文件的操作(1)

    一.文件对象 我理解的文件对象就是一个接口,通过这个接口对文件进行相关操作. <Python 核心编程>上说的很晦涩,这里没有深刻理解到,希望有人能解释给我听. >>> ...

  9. php之文件基础操作

    在php中对文件的基础操作非常的简单,php提供的函数粗略的用了一遍. file_get_contents():可以获取文件的内容获取一个网络资源的内容,这是php给我封装的一个比较快捷的读取文件的内 ...

随机推荐

  1. 2002. [HNOI2010]弹飞绵羊【LCT】

    Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...

  2. js(window.open)浏览器弹框居中显示

    <span style="background-color: rgb(204, 204, 204);"><html> <meta name=" ...

  3. django restframework 简单总结

    官方文档:http://www.django-rest-framework.org/ model.py class Snippet(models.Model): created = models.Da ...

  4. 使用Charles进行移动APP抓包分析

    一.简介 Charles是目前最强大最流行的http抓包调试工具,Mac.Unix.Windows各个平台都支持.特别是做APP开发,调试与服务端的通信,Charles是必备工具. 目前Charles ...

  5. 学记笔记 $\times$ 巩固 · 期望泛做$Junior$

    最近泛做了期望的相关题目,大概\(Luogu\)上提供的比较简单的题都做了吧\(233\) 好吧其实是好几天之前做的了,不过因为太颓废一直没有整理-- \(Task1\) 期望的定义 在概率论和统计学 ...

  6. 第8章 自己写库-构建库函数雏形—零死角玩转STM32-F429系列

    第8章     自己写库—构建库函数雏形 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/fi ...

  7. spark 基础开发 Tips总结

    本篇博客主要是 sparksql 从初始开发注意的一些基本点以及力所能及的可优化部分的介绍: 所使用spark版本:2.0.0       scala版本:2.11.8 1. SparkSession ...

  8. AWVS使用手册

    目录: 0×00.什么是Acunetix Web Vulnarability Scanner ( What is AWVS?) 0×01.AWVS安装过程.主要文件介绍.界面简介.主要操作区域简介(I ...

  9. kettle安装部署及远程执行

    一.windows环境 1.安装jdk 随意选择目录 只需把默认安装目录 \java 之前的目录修改即可 2.安装jre→更改→ \java 之前目录和安装 jdk 目录相同即可 注:若无安装目录要求 ...

  10. 20155308 加分题-mybash的实现(第五周)

    20155308 加分题-mybash的实现(第五周) 实验要求 使用fork,exec,wait实现mybash 写出伪代码,产品代码和测试代码 发表知识理解,实现过程和问题解决的博客(包含代码托管 ...