python-文件操作练习-配置文件读取、修改、删除

文件操作练习: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‘])
时间: 2024-11-01 01:45:06

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

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

Python文件操作:文件的打开关闭读取写入 一.文件的打开关闭 Python能以文本和二进制两种方式处理文件,本文主要讨论在Python3中文本文件的操作. 文件操作都分为以下几个步骤: 1.打开文件. 2.操作文件:读/写. 3.关闭文件. 操作系统中的文件默认处于存储状态,读写文件时需要请求操作系统打开一个要在当前程序操作的对象,打开不存在的文件可以创建文件.open()方法通过接收"文件路径"以及“文件打开模式”等参数来打开一个文件,并且返回文件对象.打开后的文件只能在当前程序

python之文件操作-复制、剪切、删除等

下面是把sourceDir文件夹下的以.JPG结尾的文件全部复制到targetDir文件夹下: <span style="font-size:18px;">>>>import os >>> import os.path >>> import shutil >>> def copyFiles(sourceDir,targetDir): for files in os.listdir(sourceDir):

第六章、Python文件操作

第六章.Python文件操作 Python可以对文件进行查看.创建等功能,可以对文件内容进行添加.修改.删除,且所使用到的函数在Python3.5.x为open,在Python2.7.x同时支持file和open,但是在3.5.x系列移除了file函数. 一.Python文件打开方式 文件句柄 = open('文件路径','打开模式') Nginx_Conf = open('nginx.conf','r',encoding='utf-8') Ps:文件句柄相当于于变量名,文件路径可以写为绝对路径

Python中操作ini配置文件

这篇博客我主要想总结一下python中的ini文件的使用,最近在写python操作mysql数据库,那么作为测试人员测试的环境包括(测试环境,UAT环境,生产环境)每次需要连接数据库的ip,端口,都会不同,那么如何方便的来修改这些内容,就想到了配置文件,接下来我们就了解一下python中的配置文件ini吧 ini配置文件常被用作存储程序中的一些参数,通过它,可以将经常需要改变的参数保存起来 ini文件分为两个部分,一部分是section,一部分是key,value 格式就是: [section1

3 Python文件操作

Python文件操作 open 以什么编码方式存储文件,就以什么编码方式打开 f = open('d:\模特主妇护士班主任.txt',encoding='utf-8') # 绝对路径打开 f.close() f = open('模特主妇护士班主任',encoding='utf-8') # 相对路径打开 f.close() with open('log',encoding='utf-8') as f: # 此方法常用 不用进行close 读 read # r 以str的方式读出 f = open(

Lesson 024 —— python 文件操作

Lesson 024 -- python 文件操作 open() 方法 Python open() 方法用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError. 注意:使用 open() 方法一定要保证关闭文件对象,即调用 close() 方法. open() 函数常用形式是接收两个参数:文件名(file)和模式(mode). open(file, mode='r') 完整的语法格式为: open(file, mode='r',

Python文件操作及seek偏移详解

本文和大家分享的主要是python中文件操作及seek偏移相关内容,一起来看看吧,希望对大家学习python有所帮助. 一.Python文件操作中的编码 本次测试是基于Python 2.7.12  OS:Ubuntu 16.04  pycharm环境,以及Win7下2.7.12; 首先说下汉字在文件中占用的字节数,这个先看以下实验(Win7)下 因为Linux下不支持gbk,本文不讲utf-8 ,gbk编码具体知识.本次实验只讲解python在使用utf-8和gbk编码时,对汉字占用的字节有所不

python 文件操作seek() 和 telll() 自我解释

python 文件操作seek() 和 telll()  自我解释 file.seek()方法格式: seek(offset,whence=0)   移动文件读取指针到制定位置 offset:开始的偏移量,也就是代表需要移动偏移的字节数. whence: 给offset参数一个定义,表示要从哪个位置开始偏移:0代表从文件开头算起,1代表开始从当前位置开始算起,2代表从文件末尾开始算起.当有换行时,会被换行截断.                        seek()无返回值,故值为None

关于python 文件操作os.fdopen(), os.close(), tempfile.mkstemp()

嗯.最近在弄的东西也跟这个有关系,由于c基础渣渣.现在基本上都忘记得差不多的情况下,是需要花点功夫才能弄明白. 每个语言都有相关的文件操作. 今天在flask 的例子里看到这样一句话.拉开了文件操作折腾的序幕 db_fd, flaskr.app.config['DATABASE'] = tempfile.mkstemp() 稍微查询一下就能了解到 tempfile是一个临时文件模块. 包含了一些临时文件的操作 tempfile.mkstemp() 在很老很老的python版本的时候,第一个参数是

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

Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说:1. 打开文件 2.操作文件 3.关闭文件 1. 打开文件.关闭文件 Python中使用open函数打开一个文件,创建一个file操作对象. open()方法 语法: file object = open(file_name [, access_mode][, buffering]) 各个参数的细