1. 用户选择1,增加功能:
  1. 用户输入www.oldboy2.orgserver 11111 weight 2222 maxconn 3333后,
    www.oldboy2.org下增加一条server信息:server 11111 weight 2222 maxconn 3333
  1. 用户选择2,删除功能:
  1. 用户输入www.oldboy1.org10.10.10.1 10.10.10.1后,
    server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000将被删除

    用户选择3,修改功能:
  1. 用户输入www.oldboy2.org,更改前ip所在的行server 3.3.3.3 3.3.3.3 weight 20 maxconn 3000
    更改后ip所在的行server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
  1. 用户选择4,查询功能:
  1. 用户输入www.oldboy1.org用户信息后,打印对应的server信息:
  2. server 10.10.0.10 weight 9999 maxconn 33333333333
  3. server 10.10.10.1 weight 22 maxconn 2000
  4. server 2.2.2.4 weight 20 maxconn 3000
  1.  
  1. 用户选择5,退出程序
  1. def menu():
  2. menu={"1":"增加","2":"删除","3":"修改","4":"查询","5":"退出"}
  3. for key in menu:
  4. print(key,menu[key])
  5.  
  6. def search():
  7. l=[]
  8. flag=True
  9. while flag:
  10. url=input("please input url you want to search:").strip() #输入想要查询的域名
  11. with open("haproxy.conf", encoding="utf8") as s: #打开文件
  12. for line in s:
  13. if line.startswith("backend") and url in line: #第一步,读到想要查询的域名所在的行,改变标志位状态
  14. flag=False
  15. continue
  16. if line.startswith("backend") and flag == False: #第三步,再次读取域名所在的行后,本次循环结束
  17. break
  18.  
  19. if flag==False: #第二步,将域名下的ip所在行写入列表中
  20. l.append(line)
  21. for i in l: #第四步,打印需要查询的域名下的ip地址所在的行
  22. print(i.strip())
  23. break
  24.  
  25. def delete():
  26. flag=True
  27. l=[]
  28. url = input("input url you want to delete:").strip() #输入想删除的ip地址所对应的域名
  29. ip = input("input ip you want to delete:").strip() #输入想要删除的域名
  30. while flag:
  31. with open("haproxy.conf") as d,\
  32. open("haproxy.conf_delete","w+") as d_2: #打开原文档haproxy.conf ,创建删除后的文档haproxy.conf_delete
  33. for line in d:
  34. if line.startswith("backend") and url in line: #第二步,当读取到想删除的ip地址对应的域名所对应的行
  35. d_2.writelines(line) #将该行写入haproxy.conf_delete文档中
  36. flag=False
  37. continue
  38. if line.startswith("backend") and flag==False:
  39. # 第四步,第二次读到域名行,将列表里的内容写入haproxy.conf_delete文档中,要删除的ip行不写入文档中
  40. flag=True
  41. for line in l:
  42. if url in line:
  43. continue
  44. d_2.writelines(line)
  45. d_2.writelines(line)
  46. if flag==False: #第三步,将域名下所对应的ip行写入列表中
  47. l.append(line)
  48. if flag: #第一步将读取到的行写入haproxy.conf_delete文档中
  49. d_2.writelines(line)
  50. break
  51.  
  52. def add():
  53. url =input("please input url you want to add:").strip() #输入想要增加ip所在的域名和增加的ip所在行
  54. ip = input("please input ip you want to add:")
  55. with open("haproxy.conf") as a,open("haproxy.conf_add","w") as a_2: #打开文档haproxy.conf,新建文档haproxy.conf_add
  56. for line in a:
  57. a_2.writelines(line) #循环写入读取到的行到文档haproxy.conf_add中
  58. if line.startswith("backend") and url in line:
  59. a_2.writelines(ip) #当读取到ip所在的域名,将要加入的ip所在的行写入文档haproxy.conf_add中
  60. a_2.writelines("\n")
  61.  
  62. def change():
  63. l=[]
  64. flag=True
  65. url = input("please input url you want to change:").strip() # 输入想要修改ip所在的域名
  66. ip = input("please input ip you want to change:") # 输入想要修改ip所在行
  67. ip_changed=input("please input ip you want to changed:") #输入想要修改过ip所在行
  68. with open("haproxy.conf") as c,open("haproxy.conf_change", "w") as c_2: ##打开文档haproxy.conf,新建文档haproxy.conf_change
  69. for line in c:
  70. if line.startswith("backend") and url in line:
  71. c_2.writelines(line) #第二步,读到想要修改ip所在的域名的行将该行写入文档haproxy.conf_change
  72. flag=False #改变标志位状态
  73. if line.startswith("backend") and flag==False:
  74. for line in l: #第四步,循环到列表中需要改变的ip地址,将修改过的ip地址写入文档haproxy.conf_change中
  75. if line==ip:
  76. c_2.writelines(ip_changed)
  77. continue
  78. c_2.writelines(line) #将列表中其他内容写入文档haproxy.conf_change中
  79. flag=True
  80. if flag: #第一步,将读到的行写入文件haproxy.conf_change中
  81. c_2.writelines(line)
  82. if flag==False: #第三步,将域名所在的行放入列表中
  83. l.append(line)
  84.  
  85. def main():
  86. while True:
  87. menu()
  88. choice=int(input("input your choice:"))
  89. if choice==1:
  90. add()
  91. elif choice==2:
  92. delete()
  93. elif choice==3:
  94. change()
  95. elif choice==4:
  96. search()
  97. elif choice==5:
  98. break
  99.  
  100. main()

  

  1.  
  1.  

  1.  
  1.  
  1.  

python(13)- 文件处理应用Ⅱ:增删改查的更多相关文章

  1. python manage.py shell 的增删改查

    python manage.py shell 的增删改查 guoguo-MacBook-Pro:myblog guoguo$ python manage.py shell Python 3.5.1 ( ...

  2. python学习之-成员信息增删改查

    python学习之-成员信息增删改查 主要实现了成员信息的增加,修改,查询,和删除功能,写着玩玩,在写的过程中,遇到的问题,旧新成员信息数据的合并,手机号和邮箱的验证,#!/usr/bin/env p ...

  3. 用dom4j解析xml文件并执行增删改查操作

    转自:https://www.aliyun.com/jiaocheng/1339446.html xml文件: <?xml version="1.0" encoding=&q ...

  4. python 10min系列之实现增删改查系统

    woniu-cmdb 奇技淫巧--写配置文件生成增删改查系统 视频教程 项目主页跪求github给个star, 线上demo,此页面都是一个配置文件自动生成的 详细的文章介绍和实现原理分析会发布在我的 ...

  5. 记一些Python(Pymysql)建表、增删改查等基础操作(小白适用)

    1.读取sql文件创建数据表 有一个形如下图的sql文件,使用python读取文件并在数据库中创建所有的表. 很多人学习python,不知道从何学起.很多人学习python,掌握了基本语法过后,不知道 ...

  6. Python之实例对象的增删改查

    #实例对象的增删改查p1 = ChinesePeople('wangyue')#print (p1.__dict__) #查看实例对象的属性#print (p1.name)(p1.play_ball( ...

  7. [ python ] 项目:haproxy配置文件增删改查

    1. 开发要求 实现对 haproxy.cfg 增删改查操作 2. 程序介绍 # 作者:hkey # 博客地址:https://www.cnblogs.com/hukey/p/9288279.html ...

  8. Python字典的初识、增删改查及嵌套

    为什么要有字典? 列表可以存储大量的数据,但数据间的关联型不强 列表的查询速度相对慢 dict:字典,容器型数据类型 数据类型的分类: 可变与不可变 可变(不可哈希)的数据类型: 列表list,字典d ...

  9. 文件操作之增删改查3---文件的修改,f.replace(),在linux里的一些应用sed,with语句方法来打开一个或多个文件避免忘记关闭,python一行写的太长,怎么编写多行的规范

    f.replace()with open("xxx","r",encoding="utf-8") as f: 想修改文件中间的数据,有两个办 ...

  10. 5.Python文件操作之增删改查

    需求一:取文件的前几行: f = open("yesterday","r",encoding="utf-8") for i in range ...

随机推荐

  1. URAL 1137Bus Routes (dfs)

    Z - Bus Routes Time Limit:1000MS     Memory Limit:65536KB     64bit IO Format:%I64d & %I64u Subm ...

  2. PTA 10-排序6 Sort with Swap(0, i) (25分)

    题目地址 https://pta.patest.cn/pta/test/16/exam/4/question/678 5-16 Sort with Swap(0, i)   (25分) Given a ...

  3. Python Excel导入数据库

    import xlrd import MySQLdb def inMySQL(file_name): wb = xlrd.open_workbook(file_name) sh = wb.sheet_ ...

  4. Welcome-to-Swift-13继承(Inheritance)

    一个类可以继承(inherit)另一个类的方法(methods),属性(property)和其它特性.当一个类继承其它类时,继承类叫子类(subclass),被继承类叫超类(或父类,superclas ...

  5. Key-value数据库:Redis缓存服务

    Redis 是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value数据库,并提供多种语言的API.其提供了多种主流语言的客户端,方便使用:同时Redis支持主 ...

  6. 【BJOI2014/bzoj4530】大融合

    题意 有 $n$ 个点,初始没有连边,要求支持两个动态操作: 1. 加一条边(保证之前两点不连通) 2. 查询过一条边的简单路径数量(就是两边连通块的大小的乘积) $n,Q\le 100000$ 题解 ...

  7. mysql 查询死锁语句

    我们可以用下面三张表来查原因:        innodb_trx ## 当前运行的所有事务        innodb_locks ## 当前出现的锁        innodb_lock_wait ...

  8. C#创建Graphics对象的方法

    方法一.利用控件或窗体的Paint事件中的PainEventArgs 在窗体或控件的Paint事件中接收对图形对象的引用,作为PaintEventArgs(PaintEventArgs指定绘制控件所用 ...

  9. aoj 2226 Merry Christmas

    Merry Christmas Time Limit : 8 sec, Memory Limit : 65536 KB Problem J: Merry Christmas International ...

  10. Struts2的上传与下载

    转自:http://blog.csdn.net/Mark_LQ/article/details/49822821 10.1.1 文件上传基本案例   第一步:上传组件依赖与commons-fileup ...