文件操作练习:http://www.cnblogs.com/wupeiqi/articles/4950799.html

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
复制代码

要求:

输出:
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 也删除掉。

参考思路:

http://www.cnblogs.com/wupeiqi/articles/5539371.html

#一行一行读
f=open(xxx)
for line in f:
print(line) def fetch(backend):
result=[]
with open("ha.conf",'r',encoding="utf-8") as f:
flag = False
for line in f:
if line.strip().startwith("backend") and line.strip() == "backend "+backend
flag = True
continue
if flag==True and line.strip().startwith("backend"):
flag=False
break
if flag and line.strip():
result.append(line.strip())
return result def add(backend,record):
#思路一:
#先检查记录是否存在
record_list=fetch(backend)
if not record_list:
#backend不存在
with open('ha.conf',r) as old,open("new.conf",'w') as new:
for line in old:
new.write(line)
new.write("backend "+backend +"\n")
new.write(" " * 8 + record + "\n")
else:
#backend存在
#如果记录存在,不用做任何操作,如果不存在,则将记录添加到backend下
if record in record_list:
#记录存在
import shutil
shutil.copy("ha.conf","new.conf")
pass
else:
#backend存在,record不存在
record_list.append(record)
with open('ha.conf',r) as old,open("new.conf",'w') as new:
flag = False
for line in old:
if line.strip().startwith("backend") and line.strip() == "backend "+backend:
flag = True
new.write(line)
for new_line in record_list:
new.write(" "*8 + new_line + "\n")
if flag and line.strip().startwith("backend")
flag = False
new.write(line)
continue
if line.strip() and not flag:
new.write(line) bk= 'test.oldboy.org'
rd="server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000"
add(bk,rd)
#思路二: s="[11,22,33,44,55]" #字典的表示法为s = '{"k1":"v1"}',里面元素如果是字符串的话一定要用双引号
print(type(s),s)
import json
n = json.loads(s) #将一个字符串转换为python的数据类型,[],{}
print(type(n),n) import json
r = input("input:")
dic=json.loads(r)
bk=dic['beckend']
rd = "server %s %s weight %d maxconn %d" %(dic['record'][server],
dic['record'][server],dic['record']['weight'],dic['record']['maxconn'])

python-文件操作练习-配置文件读取、修改、删除的更多相关文章

  1. Python: 文件操作与数据读取

    文件及目录操作 python中对文件.文件夹(文件操作函数)的操作需要涉及到os模块,主要用到的几个函数是, import os 返回指定目录下的所有文件和目录名: os.listdir() 重命名: ...

  2. Python文件操作:文件的打开关闭读取写入

    Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文 ...

  3. Python基础篇【第2篇】: Python文件操作

    Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...

  4. [Python学习笔记][第七章Python文件操作]

    2016/1/30学习内容 第七章 Python文件操作 文本文件 文本文件存储的是常规字符串,通常每行以换行符'\n'结尾. 二进制文件 二进制文件把对象内容以字节串(bytes)进行存储,无法用笔 ...

  5. 初学Python——文件操作第二篇

    前言:为什么需要第二篇文件操作?因为第一篇的知识根本不足以支撑基本的需求.下面来一一分析. 一.Python文件操作的特点 首先来类比一下,作为高级编程语言的始祖,C语言如何对文件进行操作? 字符(串 ...

  6. Python中操作ini配置文件

    这篇博客我主要想总结一下python中的ini文件的使用,最近在写python操作mysql数据库,那么作为测试人员测试的环境包括(测试环境,UAT环境,生产环境)每次需要连接数据库的ip,端口,都会 ...

  7. day8.python文件操作

    打开和关闭文件 open函数 用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写. file = open(file_name [, access_ ...

  8. 小学生都能学会的python(文件操作)

    小学生都能学会的python(文件操作) 1. open("文件路径", mode="模式", encoding="编码") 文件的路径: ...

  9. 第十二章 Python文件操作【转】

    12.1 open() open()函数作用是打开文件,返回一个文件对象. 用法格式:open(name[, mode[, buffering[,encoding]]]) -> file obj ...

  10. Python之路Python文件操作

    Python之路Python文件操作 一.文件的操作 文件句柄 = open('文件路径+文件名', '模式') 例子 f = open("test.txt","r&qu ...

随机推荐

  1. vue 树形数据增加属性并计算树节点的深度

    需求:在一组菜单树结构中转换数据结构(增加一些属性),并计算该树结构的节点深度. 实现util.js: function transferTreeData(arr, vm, list, level, ...

  2. 【linux】Linux删除文件后磁盘依旧占用空间的问题

    转自https://blog.51cto.com/2483526/798379 感谢 1.用df 检查发现/根目录可用空间为0 [root@/]#df -h 2.用du检查发现各目录占用的空间都很少, ...

  3. JAVA安装第一步JDK

    安装JDK----(一学就会) 一.百度搜索JDK,找到下载的地址 二.下载属于自己电脑的对应版本 三.下载到本地之后,双击安装JDK 四.配置环境变量 我的电脑->右键->属性 环境变量 ...

  4. Java中遍历集合的常用方法

    一.List 1.普通for循环 for (int i = 0; i < list.size(); i++)){ String temp = (String)list.get(i); Syste ...

  5. python3 输出字符

    import string'''whitespace -- a string containing all ASCII whitespaceascii_lowercase -- a string co ...

  6. Android Studio 如何更新到新版本

    •How 打开 Android Studio 选择任务栏中的 File 点击 Setting: 来到如下界面: 依次点击  Appearance & Behavior -> System ...

  7. Http请求状态码302,已得到html页面但未跳转?HttpServletRequest转发/HttpServletResponse重定向后,前端页面未跳转?Ajax怎么处理页面跳转?

    论断 出现此类错误,服务器端出现问题的可能性不大,大概率是前端问题. 问题概述 事情是这样的,我在用Java开发后端.前端页面使用jQuery库的 $.getJSON() 方法发送了一个Ajax请求. ...

  8. Logtash 配置文件解析-转载

    转载地址:https://dongbo0737.github.io/2017/06/13/logstash-config/ Logtash 配置文件解析 logstash 一个ELK架构中,专门用来进 ...

  9. UnitOneSummary

    目录 一.程序结构分析 第一次作业 第二次作业 第三次作业 二.Test & Bugs 三.设计模式 四.总结与反思 一.程序结构分析 第一次作业 思路: 1.输入预处理: 去除空格和\t 替 ...

  10. Vue学习笔记(三)

    1 监听 在Vue.js中可以通过watch来监听数据的变化,比如通过watch实现的简单计数器: <div id="app"> <p>计数器:{{coun ...