Python语法命令学习-Day3(作业练习)
作业要求:(作业转自武sir)
老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改,不再是以往的打开文件进行直接操作了。
现有ha配置文件如下:
输出:
1、获取ha记录
2、增加ha记录
3、删除ha记录
num = raw_input('请输入操作序号:')
如果用户输入的 1:
read = raw_input('请输入backend:') 如输入:www.oldboy.org
讲配置文件 backend www.oldboy.org 节点下的所有记录获取到,并输入到终端
如果用户输入的 2:
read = raw_input('请输入要新加的记录:') 如: {"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}
# 讲read字符串转换成 字典类型
read_dict = json.loads(read)
backend_title = read_dict['backend']
# 去配置文件中找到指定的节点:
# backend test.oldboy.org
# 如果已经存在,
# 则在此节点下添加根据用输入构造出的记录,例如:
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
# 如果不存在,
# 则添加backend节点和记录,例如:
backend test.oldboy.org
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
# (可选)可以再对节点下记录进行判断是否已经存在
如果用户输入的 3:
read = raw_input('请输入要删除的记录:') 如: {"backend": "test.oldboy.org","record":{"server": "100.1.7.9","weight": 20,"maxconn": 30}}
# 讲read字符串转换成 字典类型
read_dict = json.loads(read)
backend_title = read_dict['backend']
#去配置文件中找到指定的节点,并在删除指定记录,如:
backend test.oldboy.org
server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000
server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000 # 删除掉
# (可选)如果backend下所有的记录都已经被删除,那么将当前 backend test.oldboy.org 也删除掉。
我的答案: (###所有答案均自己写,肯定存在一些纰漏,欢迎指出###)
#! /usr/bin/env python# -*- coding: utf-8 -*- def a1(): ''' 在只读选项中,当用户输入www.oldboy.org时,输出使用 :return: ''' with open('DB1', 'r', encoding='utf-8') as f1: for i, j in enumerate(f1.readlines(), 1): if i == 29: print(j) # else: # print('bye') f1.close() def a2(): ''' 在只读选项中,当用户输入buy.oldboy.org时,输出使用 :return: ''' with open('DB1','r',encoding='utf-8') as f2: for i,j in enumerate(f2.readlines(),1): if i == 32: print(j) f2.close() def updateHA(Backend,Value): ''' 用户在选择增加ha记录后,函数主体 :return: ''' count = 0 LineRead_index = 0 with open('DB1','r',encoding='utf-8') as f1: for LineRead in f1.readlines(): count += 1 if Backend in LineRead: LineRead_index = count f1.close() with open('DB1','r',encoding='utf-8') as f2: DB1_str = f2.read() f2.close() DB1_list = DB1_str.split('\n') DB1_list.insert(LineRead_index,Value) DB1_str = '\n'.join(DB1_list) with open('DB1','w',encoding='utf-8') as f2: f2.write(DB1_str) f2.close() def main(): user_input = input('1、获取ha记录\n2、增加ha记录') if user_input == '1': #print(type(user_input)) read_input = input('请输入backend:') if read_input == 'www.oldboy.org': a1() elif read_input == 'buy.oldboy.org': a2() elif user_input == '2': NewBackend = input('请输入新的backend') NewValue_add = input('请输入新的value') NewValue = '\t\t%s'% NewValue_add #print(type(user_input)) updateHA(NewBackend,NewValue) else: if user_input.isdigit() is True: print('请输入正确的选择!') else: print('看仔细了,数字懂伐?') main()
转载于:https://www.cnblogs.com/lich1x/p/9231170.html
Python语法命令学习-Day3(作业练习)相关推荐
- python全栈学习--day3
一.基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余 + - * / ** %... 2.bool 布尔值 判断真假以及作为条件变量 ...
- python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...
原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...
- python语法学习—实现猜拳游戏
python基础语法学习,通过实现猜拳游戏,来对python语法的学习. # python语法实现 猜拳游戏 电脑随机出拳进行比较,用户自己输入要出的拳,用户赢了就退出游戏 # 主要用到 python ...
- python展开函数方法_逐步展开Python详细教学—Python语法
Python语法–在Python世界迈出第一步 我们已经拥有了许多的编程语言,而且都有自己的特色,但是一种语言的独特之处在于它的特性.最终,是它的特点让它被选中或通过项目.因此,在开始更深入的Pyth ...
- 爬虫系列一:十天python爬虫基础学习实战第二天——python基础语法
第一天已经学会了基本的开发环境的安装,今天,可以开始学习如何写代码了,朋友们! 回顾: 1.爬虫能干什么? 2.python环境安装 3.pycharm安装(IDE) 4.简单打印输出hello wo ...
- Python学习day5作业-ATM和购物商城
Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...
- 人工智能实践:TensorFlow笔记学习(二)—— Python语法串讲
Python语法串讲 大纲 2.1 Linux指令.HelloWorld 2.2 列表.元组.字典 2.3 条件语句 2.4 循环语句 2.5 turtle模块 2.6 函数.模块.包 2.7 类. ...
- python与c语言在语法上的区别-C语言和Python编程先学习哪个
原标题:C语言和Python编程先学习哪个 初学者,Python和C语言先学哪个好? 就像是"先有鸡还是先有蛋一样",先学python还是先学C语言,这也是个世纪难题. 这种纠结并 ...
- python基础指令-python基础语法,python 代码命令大全
python: 1.语法强制缩进 2.区分大小写:iLoop与iloop是两个变量 3.变量无需申明,但是变量赋值前无法使用:a=3合法,b=a+3合法,b=a+c不合法,因为c未赋值前不能使用 4. ...
- Python学习day5作业
目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...
最新文章
- 【Android】Android中使用JNI调用底层C++代码
- 从Chrome中的css自定义样式按钮中删除蓝色边框
- mysql 导出函数_mysql导出存储过程或函数
- java 中 阻塞队列 非阻塞队列 和普通队列的区别
- 关于实现android状态栏沉浸的几种方法
- 样本不均衡、长尾分布问题的方法整理(文献+代码)
- 夯实基础,彻底掌握js的核心技术(二):面向对象编程(Object Oriented Programming)
- paip.快捷方式分组管理最佳实践ObjectDock
- 【人脸识别】基于matlab GUI PCA算法人脸识别门禁系统【含Matlab源码 1777期】
- linux 下kali linux 中使用hydra 进行对虚拟机中win10系统的密码破解
- SitePoint Podcast#167:炉边聊天
- 曾国藩:人生的三个阶段,做对了,剩下就是好运气
- echarts切换飞线图未清空_echarts做飞线图
- 怎样将pdf格式转换成jpg
- 在利用PS进行绘画时,线条画不直怎么办?
- GNU工具链(GNU Toolchain)学习
- 展示一下基于flask框架的网页播放器的代码
- nodejs cms mysql_strapi (基于Nodejs的开源免费CMS框架)新手教程
- 在宜宾,看见未来中国的产融平台样本
- 寒江独钓(1):内核数据类型和函数
热门文章
- R语言绘制双坐标轴的方法初探
- 你真的要收下这份大礼包!!
- snmp有android代理端吗,GitHub - wosika/SNMP4Android: 简易使用于安卓的SNMP工具类,基于snmp4j...
- 路飞学城项目之加入购物车接口
- [记录]Python的master-worker和epoll模式
- mysql怎么让id重新开始自增
- MFC编程入门之二十一(常用控件:编辑框Edit Control)
- lua绑定c++的时候常见得错误
- 理解Servlet及其对象
- centos7更改引导项等待时间