作业要求:(作业转自武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(作业练习)相关推荐

  1. python全栈学习--day3

    一.基础数据类型 基础数据类型,有7种类型,存在即合理. 1.int 整数 主要是做运算的 .比如加减乘除,幂,取余  + - * / ** %... 2.bool 布尔值 判断真假以及作为条件变量 ...

  2. python语法基础学习-Python基础语法精心总结!看完都知道的可以往下继续学习了...

    原标题:Python基础语法精心总结!看完都知道的可以往下继续学习了 这应该是最详细的Python入门基础语法总结! 定义变量,使用变量 1. input 用户自己输入值 2. print 打印值 可 ...

  3. python语法学习—实现猜拳游戏

    python基础语法学习,通过实现猜拳游戏,来对python语法的学习. # python语法实现 猜拳游戏 电脑随机出拳进行比较,用户自己输入要出的拳,用户赢了就退出游戏 # 主要用到 python ...

  4. python展开函数方法_逐步展开Python详细教学—Python语法

    Python语法–在Python世界迈出第一步 我们已经拥有了许多的编程语言,而且都有自己的特色,但是一种语言的独特之处在于它的特性.最终,是它的特点让它被选中或通过项目.因此,在开始更深入的Pyth ...

  5. 爬虫系列一:十天python爬虫基础学习实战第二天——python基础语法

    第一天已经学会了基本的开发环境的安装,今天,可以开始学习如何写代码了,朋友们! 回顾: 1.爬虫能干什么? 2.python环境安装 3.pycharm安装(IDE) 4.简单打印输出hello wo ...

  6. Python学习day5作业-ATM和购物商城

    Python学习day5作业 Python学习day5作业 ATM和购物商城 作业需求 ATM: 指定最大透支额度 可取款 定期还款(每月指定日期还款,如15号) 可存款 定期出账单 支持多用户登陆, ...

  7. 人工智能实践:TensorFlow笔记学习(二)—— Python语法串讲

    Python语法串讲  大纲 2.1 Linux指令.HelloWorld 2.2 列表.元组.字典 2.3 条件语句 2.4 循环语句 2.5 turtle模块 2.6 函数.模块.包 2.7 类. ...

  8. python与c语言在语法上的区别-C语言和Python编程先学习哪个

    原标题:C语言和Python编程先学习哪个 初学者,Python和C语言先学哪个好? 就像是"先有鸡还是先有蛋一样",先学python还是先学C语言,这也是个世纪难题. 这种纠结并 ...

  9. python基础指令-python基础语法,python 代码命令大全

    python: 1.语法强制缩进 2.区分大小写:iLoop与iloop是两个变量 3.变量无需申明,但是变量赋值前无法使用:a=3合法,b=a+3合法,b=a+c不合法,因为c未赋值前不能使用 4. ...

  10. Python学习day5作业

    目录 Python学习day5作业 ATM和购物商城 1. 程序说明 2. 基本流程图 3. 程序测试帐号 4. 程序结构: 5. 程序测试 title: Python学习day5作业 tags: p ...

最新文章

  1. 【Android】Android中使用JNI调用底层C++代码
  2. 从Chrome中的css自定义样式按钮中删除蓝色边框
  3. mysql 导出函数_mysql导出存储过程或函数
  4. java 中 阻塞队列 非阻塞队列 和普通队列的区别
  5. 关于实现android状态栏沉浸的几种方法
  6. 样本不均衡、长尾分布问题的方法整理(文献+代码)
  7. 夯实基础,彻底掌握js的核心技术(二):面向对象编程(Object Oriented Programming)
  8. paip.快捷方式分组管理最佳实践ObjectDock
  9. 【人脸识别】基于matlab GUI PCA算法人脸识别门禁系统【含Matlab源码 1777期】
  10. linux 下kali linux 中使用hydra 进行对虚拟机中win10系统的密码破解
  11. SitePoint Podcast#167:炉边聊天
  12. 曾国藩:人生的三个阶段,做对了,剩下就是好运气
  13. echarts切换飞线图未清空_echarts做飞线图
  14. 怎样将pdf格式转换成jpg
  15. 在利用PS进行绘画时,线条画不直怎么办?
  16. GNU工具链(GNU Toolchain)学习
  17. 展示一下基于flask框架的网页播放器的代码
  18. nodejs cms mysql_strapi (基于Nodejs的开源免费CMS框架)新手教程
  19. 在宜宾,看见未来中国的产融平台样本
  20. 寒江独钓(1):内核数据类型和函数

热门文章

  1. R语言绘制双坐标轴的方法初探
  2. 你真的要收下这份大礼包!!
  3. snmp有android代理端吗,GitHub - wosika/SNMP4Android: 简易使用于安卓的SNMP工具类,基于snmp4j...
  4. 路飞学城项目之加入购物车接口
  5. [记录]Python的master-worker和epoll模式
  6. mysql怎么让id重新开始自增
  7. MFC编程入门之二十一(常用控件:编辑框Edit Control)
  8. lua绑定c++的时候常见得错误
  9. 理解Servlet及其对象
  10. centos7更改引导项等待时间