day05.2-一个文件的增删改查实例
一. 测试程序
#INFO.txt源文件内容
global
log 127.0.1 local2
daemon
maxconn 256
log 127.0.0.1 local2 info
default
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 100.1000.7.9 100.1000.7.9 weight 20 maxconn 30
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
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
#bin.py """
功能:查询文件中是否存在输入标签对应的信息,并打印查询结果
输入:标签信息{"backend":"","inform":{"server":"","weight":"","maxconn":""}}
返回:True----文件中存在标签对应的信息 False----文件中不存在标签对应的信息
"""
def fetch(record):
record = eval(record)
tag1 = False
tag2 = False
sub_record = "server "+str(record["inform"]["server"])+" "+str(record["inform"]["server"])+" weight "+str(record["inform"]["weight"])+" maxconn "+str(record["inform"]["maxconn"])
with open("INFO.txt","r") as file:
for item in file:
if item.strip()=="backend "+record["backend"]:
tag1 = True
if tag1 and item.strip()==sub_record:
tag2 = True
break
file.close()
if tag1 and tag2:
return True
else:
return False """
功能:添加标签信息,
如果要添加信息的backend存在,则在backend对应的子标签末尾添加inform对应信息
如果要添加信息的backend不存在,则在文件末尾添加backend以及inform对应信息
输入:要添加的标签信息{"backend":"","inform":{"server":"","weight":"","maxconn":""}}
"""
def add(record):
record = eval(record)
sub_record = "server "+str(record["inform"]["server"])+" "+str(record["inform"]["server"])+" weight "+str(record["inform"]["weight"])+" maxconn "+str(record["inform"]["maxconn"])
tag1 = False
tag2 = False
with open("INFO.txt","r") as file,\
open("INFO_new.txt","w") as file_new:
for item in file:
if not tag1:
file_new.write(item)
if item.strip()=="backend "+record["backend"]:
tag1 = True
continue
if tag1 and item.startswith(" "):
file_new.write(item)
if tag1 and not item.startswith(" "):
file_new.write(" "*8+sub_record+"\n")
file_new.write(item)
tag2 = True
tag1 = False
if not tag2:
file_new.write("\nbackend "+record["backend"])
file_new.write("\n"+" "*8+sub_record+"\n")
file.close()
file_new.close() """
功能:删除标签信息,
如果要删除的标签信息存在,则删除对于标签,原文件中该标签之后的信息逐行上移一行
如果要删除的标签信息不存在,则显示提示信息
输入:要删除的标签信息{"backend":"","inform":{"server":"","weight":"","maxconn":""}}
"""
def delete(record):
res = fetch(record)
if not res:
print("要删除的标签信息不存在")
return
else:
tag1 = False
record = eval(record)
sub_record = "server "+str(record["inform"]["server"])+" "+str(record["inform"]["server"])+" weight "+str(record["inform"]["weight"])+" maxconn "+str(record["inform"]["maxconn"])
with open("INFO.txt","r") as file,\
open("INFO_new.txt","w") as file_new:
for item in file:
if not tag1:
file_new.write(item)
if item.strip() == "backend " + record["backend"]:
tag1 = True
if tag1 and item.strip()!=sub_record:
file_new.write(item)
if tag1 and item.strip()==sub_record:
tag1 = False
continue
file.close()
file_new.close() """
功能:修改标签信息,
如果要修改的标签信息存在,则将原文件中该标签信息修改
如果要修改的标签信息不存在,则显示提示信息
输入:要修改的标签信息{"backend":"","inform":{"server":"","weight":"","maxconn":""}}
修改后标签信息{"backend":"","inform":{"server":"","weight":"","maxconn":""}}
"""
def modify(recorded,record):
res = fetch(recorded)
if not res:
print("要修改的标签信息不存在")
return
else:
recorded = eval(recorded)
sub_recorded = "server "+str(recorded["inform"]["server"])+" "+str(recorded["inform"]["server"])+" weight "+str(recorded["inform"]["weight"])+" maxconn "+str(recorded["inform"]["maxconn"])
record = eval(record)
sub_record = "server "+str(record["inform"]["server"])+" "+str(record["inform"]["server"])+" weight "+str(record["inform"]["weight"])+" maxconn "+str(record["inform"]["maxconn"])
if recorded["backend"]!=record["backend"]:
print("输入有误")
return
else:
tag1 = False
tag2 = False
with open("INFO.txt", "r") as file, \
open("INFO_new.txt", "w") as file_new:
for item in file:
if item.strip()=="backend "+recorded["backend"]:
tag1 = True
elif tag1 and item.strip()==sub_recorded:
tag2 = True
if tag2:
file_new.write(" "*8+sub_record+"\n")
tag1 = False
tag2 = False
continue
elif not tag2:
file_new.write(item)
file.close()
file_new.close() Menu_msg = {"":fetch,"":add,"":delete,"":modify} #功能函数字典
menu_msg = ["1: fetch","2: add","3: delete","4: modify","5: exit"] while(True):
print("*"*20)
for item in menu_msg:
print(" " + item)
print("*"*20)
opration = input("请输入您的操作:").strip()
if opration=="":
record = input("请输入查询信息").strip()
res=Menu_msg[opration](record)
print(res)
elif opration=="":
record = input("请输入要添加的信息").strip()
Menu_msg[opration](record)
elif opration=="":
record = input("请输入要删除的信息").strip()
Menu_msg[opration](record)
elif opration=="":
recorded = input("请输入要修改的信息").strip()
record = input("请输入修改后信息").strip()
Menu_msg[opration](recorded,record)
elif opration=="":
break
elif opration not in Menu_msg.keys():
continue
二. 功能测试
- 查询
#程序运行过程 ********************
1: fetch
2: add
3: delete
4: modify
5: exit
********************
请输入您的操作:>? 1
请输入查询信息>? {"backend":"www.oldboy1.org","inform":{"server":"100.1000.7.9","weight":20,"maxconn":30}}
True
- 添加
1. 添加子标签
#程序运行过程 ********************
1: fetch
2: add
3: delete
4: modify
5: exit
********************
请输入您的操作:>? 2
请输入要添加的信息>? {"backend":"www.oldboy1.org","inform":{"server":"100.1000.7.9","weight":11,"maxconn":30}}
#INFO_new.txt修改后文件内容 global
log 127.0.1 local2
daemon
maxconn 256
log 127.0.0.1 local2 info
default
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 100.1000.7.9 100.1000.7.9 weight 20 maxconn 30
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
server 100.1000.7.9 100.1000.7.9 weight 11 maxconn 30
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
2. 添加新标签
#程序运行过程 ********************
1: fetch
2: add
3: delete
4: modify
5: exit
********************
请输入您的操作:>? 2
请输入要添加的信息>? {"backend":"www.oldboy3.org","inform":{"server":"100.1000.7.9","weight":20,"maxconn":30}}
#INFO_new.txt修改后文件内容
global
log 127.0.1 local2
daemon
maxconn 256
log 127.0.0.1 local2 info
default
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 100.1000.7.9 100.1000.7.9 weight 20 maxconn 30
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 33333333333
server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
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.oldboy3.org
server 100.1000.7.9 100.1000.7.9 weight 20 maxconn 30
- 删除
#程序运行过程 ********************
1: fetch
2: add
3: delete
4: modify
5: exit
********************
请输入您的操作:>? 3
请输入要删除的信息>? {"backend":"www.oldboy1.org","inform":{"server":"10.10.0.10","weight":9999,"maxconn":33333333333}}
#INFO_new修改后文件内容
global
log 127.0.1 local2
daemon
maxconn 256
log 127.0.0.1 local2 info
default
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
backend www.oldboy1.org
server 100.1000.7.9 100.1000.7.9 weight 20 maxconn 30
server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
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
- 修改
#程序运行过程 ********************
1: fetch
2: add
3: delete
4: modify
5: exit
********************
请输入您的操作:>? 4
请输入要修改的信息>? {"backend":"www.oldboy1.org","inform":{"server":"10.10.0.10","weight":9999,"maxconn":33333333333}}
请输入修改后信息>? {"backend":"www.oldboy1.org","inform":{"server":"10.10.0.10","weight":9999,"maxconn":1111}}
#INFO_new.txt文件修改后内容
global
log 127.0.1 local2
daemon
maxconn 256
log 127.0.0.1 local2 info
default
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 100.1000.7.9 100.1000.7.9 weight 20 maxconn 30
server 10.10.0.10 10.10.0.10 weight 9999 maxconn 1111
server 10.10.10.1 10.10.10.1 weight 22 maxconn 2000
server 2.2.2.4 2.2.2.4 weight 20 maxconn 3000
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
day05.2-一个文件的增删改查实例的更多相关文章
- MyBatis学习(二)、SQL语句映射文件(2)增删改查、参数、缓存
二.SQL语句映射文件(2)增删改查.参数.缓存 2.2 select 一个select 元素非常简单.例如: <!-- 查询学生,根据id --> <select id=" ...
- java对xml文件做增删改查------摘录
java对xml文件做增删改查 package com.wss; import java.io.File;import java.util.ArrayList;import java.util.Lis ...
- MyBatis学习 之 二、SQL语句映射文件(2)增删改查、参数、缓存
目录(?)[-] 二SQL语句映射文件2增删改查参数缓存 select insert updatedelete sql parameters 基本类型参数 Java实体类型参数 Map参数 多参数的实 ...
- 【练习】Python第四次:实现对文件的增删改查
一,实现对文件的增删改查 (一),三级菜单的处理结构及退出技巧:使用TAG标记 tag=True while tag: print('leve1') choice=input("level1 ...
- day84-仿照admin实现一个自定义的增删改查组件
一.admin的使用 app01的admin.py文件: class BookConfig(admin.ModelAdmin): list_display=[] list_display_links= ...
- 基于SpringMVC的文件(增删改查)上传、下载、更新、删除
一.项目背景 摘要:最近一直在忙着项目的事,3个项目过去了,发现有一个共同的业务,那就是附件的处理,附件包括各种文档,当然还有图片等特殊文件,由于时间的关系,每次都是匆匆忙忙的搞定上线,称这项目的空档 ...
- java:JSP(JSPWeb.xml的配置,动态和静态导入JSP文件,重定项和请求转发,使用JSP实现数据库的增删改查实例)
1.JSP的配置: <%@ page language="java" import="java.util.*" pageEncoding="UT ...
- BitAdminCore框架应用篇:(二)创建一个简单的增删改查模块
NET Core应用框架之BitAdminCore框架应用篇系列 框架演示:http://bit.bitdao.cn 框架源码:https://github.com/chenyinxin/cookie ...
- Python文件操作-文件的增删改查
需求:对文件进行增删改查 由于时间原因,本次代码没有增加任何注释,如有疑问,请联系编辑者:闫龙 其实我也是醉了,看着这些个代码,我脑袋也特么大了,没办法,大神说了,不让用新知识,只可以使用学过的,所以 ...
随机推荐
- Spring Boot实践——Spring Boot 2.0 新特性和发展方向
出自:https://mp.weixin.qq.com/s/EWmuzsgHueHcSB0WH-3AQw 以Java 8 为基准 Spring Boot 2.0 要求Java 版本必须8以上, Jav ...
- Oracle Tip: Choosing an efficient design for Boolean column values
Takeaway: When designing a database table structure, it's important to choose an efficient strategy ...
- Filebeat+Logstash+Elasticsearch测试
安装配置好三个软件使之能够正常启动,下面开始测试. 第一步 elasticsearch提供了restful api,这些api会非常便利,为了方便查看,可以使用postman调用接口. 1.查看Ela ...
- 新手C#属性set,get的学习(部分转)2018.08.06
public class person { public string name; } public class person { public string Name { set; get; } } ...
- PLSQL result set exceeds the maximum size(100M)if necessary,you can explicitly confinue this query
在PL SQL 里执行一条语句,当反正信息达到2w条时,弹出如下内容:result set exceeds the maximum size(100M)if necessary,you can exp ...
- 关于mybatis框架的总结【转载】
原文地址:https://www.cnblogs.com/xiaotie666/p/LiujinMybatisSummary.html 此文为转载.请支持原作者. 最近在学习MyBatis框架,我在这 ...
- 解决 Windows 系统使用 Homestead 运行 Laravel 本地项目响应缓慢问题
laravel-china.com: https://laravel-china.org/articles/9009/solve-the-slow-response-problem-of-window ...
- [Selenium] 怎样判断是否适合自动化测试
实施自动化测试前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试.通常需要满足以下条件: 1)需求变动不频繁 2)项目周期足够长 3)自动化测试脚本可重复使用 4)手工测试无法完成或者需要大 ...
- eclipse两种注释的快捷键
方法一:使用Ctrl+/快捷键 1 第1步:在Eclipse中拖动鼠标,选中需要注释的代码,通常为连续多行代码. 2 第2步:按住Ctrl+/快捷键,如图所示. 3 第3步:会发现所选代码被“// ...
- asp.net mvc 5框架揭秘(文摘)
第1章 asp.net + mvc 1.1.2 什么是MVC模式: model:对应用状态和业务功能的封装,同时包含数据和行为的领域模型. view:实现可视化界面的呈现并捕捉最终用户的交互操作. c ...