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()
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号