练习-文本日志增加删除(指定字符串格式)

日志格式

backend test.oldboy.orgb1

backend buy.oldboy.org

 

import json

s = ‘‘‘{"backend":"%s",
        "record":{
            "server":"%s",
            "weight":"%s",
            "maxcoon":"%s"
                }
        }‘‘‘

# 显示一级菜单
def p_1():
    print(‘1:增加一条记录‘,‘      2:删除一条记录‘)

# 显示二级菜单
def p_2():
    print(‘1:test.oldboy.org‘,‘     2:buy.oldboy.org‘)

#计算开始和结束位置
def ins_del(readlines):
    mstart = mend = None
    for i in readlines:
        if dic[‘backend‘] in i:
            mstart = readlines.index(i)
        elif None != mstart and i.strip() == ‘‘:
            mend = readlines.index(i,mstart)
            break
    else:
        mend = len(readlines)
        if not ‘\n‘ in readlines[mend - 1]:#如果结束行没有换行,就添加换行符
            readlines[mend - 1] += ‘\n‘
    return mstart,mend

while True:
    p_1()
    pt = input(‘选择增加还是删除:‘)
    if pt == ‘q‘:
        print(‘退出操作‘)
        exit()
    elif pt.isdigit() and int(pt) > 0 and int(pt) < 3:
        p_2()
        if int(pt) == 1:#增加
            while True:
                pt = input(‘选择要增加的类型:‘)
                if pt == ‘q‘:
                    print(‘退出操作‘)
                    exit()
                elif pt == ‘b‘:
                    break
                elif pt.isdigit() and int(pt) > 0 and int(pt) < 3:
                    server = input(‘输入server信息:‘)
                    weight = input(‘输入weight信息:‘)
                    maxcoon = input(‘输入maxcoon信息:‘)
                    if int(pt) == 1:
                        ts = s % (‘test.oldboy.org‘,server,weight,maxcoon)
                    else:
                        ts = s % (‘buy.oldboy.org‘,server,weight,maxcoon)
                    dic = json.loads(ts)#将字典格式字符串转换成字典(字符串内需用双引号)
                    with open(‘file.txt‘,‘r+‘) as f:
                        r = f.readlines()
                        mstart,mend = ins_del(r)
                        r.insert(mend,
                                 (‘\tserver {server} weight {weight} maxcoon {maxcoon}\n‘.format(**dic[‘record‘])))
                        f.seek(0)#readlines后指针的文件尾部,所以要移动指针到首部
                        f.writelines(r)#新增比原来行数多,会直接覆盖,所以不用清空原文件
                        break #跳出此次操作
                else:
                    print(‘未定义%s‘ % pt)

        else:#删除
            while True:
                pt = input(‘选择要删除的类型:‘)
                if pt == ‘q‘:
                    print(‘退出操作‘)
                    exit()
                elif pt == ‘b‘:
                    break
                elif pt.isdigit() and int(pt) > 0 and int(pt) < 3:
                    with open(‘file.txt‘,‘r‘) as f:
                        r = f.readlines()
                        if int(pt) == 1:
                            dic = {"backend": "test.oldboy.org",}
                        else:
                            dic = {"backend": "buy.oldboy.org",}
                        mstart,mend = ins_del(r)
                        tlist = list(r[mend:mstart:-1])#倒序切片列表
                        rcount = 1#倒序步进值,因为mend=空行或列表总行数,比实际下标多1,所以从1开始
                        for i in tlist:
                            if ‘server‘ in i:#判断是否是要删除的内容
                                #内容是倒的,所有查找索引也要从倒着开始,不然index默认找第一次出现的值
                                r.pop(r.index(i,mend - rcount))
                                break
                            rcount += 1
                    with open(‘file.txt‘,‘w‘) as f:#清空原始文本
                        f.writelines(r)
                        break
                else:
                    print(‘未定义%s‘ % pt)
    else:
        print(‘未定义%s‘ % pt)

  

时间: 2024-10-11 07:06:40

练习-文本日志增加删除(指定字符串格式)的相关文章

Linux下定时切割Mongodb数据库日志并删除指定天数前的日志记录(转)

文章转自:http://www.osyunwei.com/archives/8998.html 说明: 操作系统:CentOS Mongodb安装目录:/usr/local/mongodb Mongodb数据库存放目录:/home/data/mongodb/mongodb_data Mongodb日志存放目录:/home/data/mongodb/mongodb_log 实现目的: 对Mongodb数据库日志按天保存,并且只保留最近7天的日志记录. 具体操作: 使用Mongodb数据库自带的命令

String的两个API,判断指定字符串是否包含另一字符串,在字符串中删除指定字符串。

// 在字符串中删除指定字符串. String phoneNum="1795112345"; phoneNum = phoneNum.replace("17951", ""); System.out.println(phoneNum); //判断指定字符串是否包含另一字符串 String phoneNum="1795112345"; String IpNum="17951"; return phoneNum

Linux下定时切割nginx日志并删除指定天数前的日志记录

nginx的log日志分为access.log和error.log:其中access.log 记录了哪些用户.哪些页面以及用户浏览器.ip和其他的访问信息:error.log则是记录服务器错误日志. error.log日志的形式如下: 201.158.69.116 - - [03/Jan/2013:21:17:20 -0600] fwf[-] tip[-] 127.0.0.1:9000 0.007 0.007 MX pythontab.com GET /html/test.html HTTP/1

从第一个字符串中删除指定字符串

demo: //删除str1中与str2相同的字母 var str1='stay hungry stay foolish'; var str2='she'; ------------------1正则replace()------------------------- ------------------2字符串的split和数组的join------------ for(var i=0;i<str2.length;i++){ str1=str1.split(str2[i]) .join('')

C++求解字符串(最小子字符串,最大子字符串,删除指定字符串)

#include <iostream> #include <string.h> #define SIZE 10 #define MAXVALUE 0x7fffffff using namespace std; //题目是:求一个字符串中最小字串. //求最小字串,比求最大字串难的多,下面有我的求最大字串代码,我没有想到更好的方法,下面的这个方法虽然空间复杂度太大,可是时间复杂度是比较快的. template<typename T> struct Node { T dat

Linux下定时切割Tomcat日志并删除指定天数前的日志记录

ystem.out和System.err都被打印到catalina.out.catalina.out不会rotate.一般在部署Tomcat后,运行久了,catalina.out文件会越来越大,对系统的稳定造成了一定的影响. 1.可通过修改conf/logging.properties日志配置文件来屏蔽掉这部分的日志信息. [[email protected] conf]# pwd /usr/local/tomcat/conf [[email protected] conf]# cp loggi

删除指定字符串的算法题,面试时候没做出来

很多年没来这里了. 今天上午参加了字节跳动视频面试,面试官让现场做一道算法题,有点紧张做错了.我把题目发出来,有需要的朋友看看. 题目:删除字符串 描述:给定一个字符串,不考虑大小写,将该字符串中连续的某个子串'XXX'删除,返回结果中不包含'XXX'. 例子: 输入字符串:aaaabbbbb XXX子串:ab 输出结果:b 结束面试后,花了几分钟时间做了一下(用python语言实现). 1 def removeString(in_str, remove_str='ab'): 2 ret_lis

Linux下用cronolog切割Tomcat日志并删除指定天数前的日志记录

使用cronolog工具切分Tomcat的catalina.out日志文件 普通用户下载.安装cronolog [[email protected] ~]$ tar -xf cronolog-1.6.2.tar.gz [[email protected] ~]$ cd cronolog-1.6.2/ [[email protected] cronolog-1.6.2]$  ./configure --prefix=/home/tomcat/cronolog make make install r

log4j.xml 日志只输出指定类配置

1.日志增加appender 指定日志生成时间.格式.间隔时间. 2.category指定哪些或哪个类日志生成在文件中. 3.自定义logger避免不要将userBehavior定义到root中避免继承导致其他日志写到userBehavior中. 配置样例如下: <!--增加 开始--> <appender name="userBehavior" class="com.xx.app.server.userbehavior.log.MinuteRollingA