s11 day3 作业详细
想写好作业,老老实实的一步一步往下看...
raw_input 获取的用户输入是字符串
1 2 3 4 5 6 | input_str = raw_input ( "请输入内容:" ) #如: #用户输入:123 则 input_str = "123" #用户输入:hello 则 input_str = "hello" #用户输入:{"k1":123, "k2": "wupeiqi"} 则 input_str = ' {"k1":123, "k2": "wupeiqi"} ' |
################# raw_input 获取到的输入都是字符串、字符串、字符串 !!!!!!! #################
因为raw_input 获取的是字符串,所以用户输入的 ' {"k1":123, "k2": "wupeiqi"} ' 不具有字典的特性,也就不能使用 dic['key'] 来获取值
如果想要将用户输入的内容转换下格式,
1 2 | '{"k1":123, "k2": "wupeiqi"}' 字符串转换成字典类型 "[11,22,33,44]" 字符串转换成列表类型 |
################# 当当当当,python的json模块可以搞搞搞 !!!!!!! #################
json模块
json模块的作用之一:根据字符串书写格式,将字符串自动转换成相应格式
1 2 3 4 5 6 7 8 | import json inp_str = "[11,22,33,44]" inp_list = json.loads(inp_str) # 根据字符串书写格式,将字符串自动转换成 列表类型 inp_str = ' {"k1":123, "k2": "wupeiqi"} ' # 正确的输入 切记,内部必须是 双引号 !!! #inp_str = " {'k1':123, 'k2': 'wupeiqi'}" # 错误的输入 inp_dict = json.loads(inp_str) # 根据字符串书写格式,将字符串自动转换成 字典类型 |
学习json有什么用呢?本次作业可以用上哦!!!!!!!
作业实例:(谁要是再不清楚作业,看我下周带皮鞭去抽他...)
需求:
老板现在给你任务,公司有haproxy配置文件,希望通过python程序可以对ha配置文件进行增删改,不再是以往的打开文件进行直接操作了。
现有ha配置文件如下:
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults 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.oldboy.org server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000 backend buy.oldboy.org server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000 原配置文件如下
PS:以下只是实例,有好的想法也是可以的!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | 输出: 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 也删除掉。 |
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
global log 127.0.0.1 local2 daemon maxconn 256 log 127.0.0.1 local2 info defaults 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.oldboy.org server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000 backend buy.oldboy.org server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
![](https://images.cnblogs.com/cnblogs_com/wupeiqi/662608/o_Warning.png)
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步