批量文档搜索关键字-基于python脚本的实现

封面

需求:

1.我需要在一个目录下所有的日志里面进行大量搜索,查找例如某个关键字,或者设备wwn,mac,ip地址,uuid等等。查看关键字在哪个log文档里面,本来想百度下有没有类似的软件,不过找啦半天没找到,都是基于word批量搜索的,需求不符,有知道的帮忙留个言,谢谢!
2.公司能用开源的系统,绝对不会自己开发系统,关键来啦,领导经常提一些需求,特么本来免费的东东,还特么要求那么多,又不舍得花钱自己开发,苦逼,所以得经常要修改开源系统里面的一些东西,但又不想一点一点查看代码去查找,费时费力,直接web层面抓取一些信息,进行搜索代码位置。

脚本实现功能:

  • 利用python sys包把一个目录下所有的日志进行路径整理。
  • 利用 python的re正则进行搜索日志。

脚本信息如下,根据以前初学的脚本改的,写的太烂,嘿嘿

__author__ = 'l4537'
#coding:utf-8
import os,re,sys
def Sea(file,scr):
    pass
    f = open(file,"r",encoding='UTF-8')
    try:
        data = f.read()
    # with open(file, 'rb') as f:
    #     data = f.read()
        b = re.findall(str(scr),data)
        return b
    except Exception as e:
        return []
def WWn(wwn):
    a = re.findall(r":",wwn)
    b = []
    b.append(wwn.lower())
    if len(a) == 0:
        k = []
        for i in range(0,16,2):
            z = i + 2
            k.append(wwn[i:z])
        k = ":".join(k).lower()
        b.append(k)
    elif len(a) > 0:
        b.append(re.sub(r'(:)','',wwn).lower())
    return b
#小写
def Wwn_re_xiaoxie(s):
    return re.sub(r'()','',s).lower()

def filesearch(dress):
    listdir = []
    listtouch = []
    list = os.listdir(dress)
    for k in list:
        kk = os.stat(k)
        if kk[0] == 16788 or kk[0] == 16895:
            a = os.listdir(str(str(os.getcwd()) + str(os.sep) + str(k)))
            listdir.append(a)
        if kk[0] == 33206 or kk[0] == 33279:
            listtouch.append(k)
def Dic_sea():
    listdir = []
    for i in os.walk(os.getcwd(), onerror=None, followlinks=False):
        if i[2] != []:
            for k in i[2]:
                file = str(i[0] + str(os.sep) + k)
                kk = os.stat(file)
                if kk[0] == 33206 or kk[0] == 33279:
                    listdir.append(str(i[0] + str(os.sep) + k))
    for i in listdir:
        print(i)
    print("搜索其他请按1:\n\n搜索wwn请按2:\n\n退出请按3;")
    main_1 = input(u"请输入要菜单号:")
    if main_1 == "2":
        zz = str(input(u"请输入要搜素的wwn:"))
        list_wwn = WWn(zz)
        for i in listdir:
            if i == "dome.py":
                pass
            else:
                for k in list_wwn:
                    bb = Sea(i,k)
                    if len(bb)> 0:
                        print(i,u"文件存在该字符串")
    if main_1 == "1":
        z = str(input(u"请输入要搜素的字符串:"))
        for i in listdir:
            if i == "dome.py":
                pass
            else:
                b = Sea(i,z)
                if len(b)> 0:
                    print(i,u"文件存在该字符串")
                else:
                    pass
Dic_sea()

你可能感兴趣的:(批量文档搜索关键字-基于python脚本的实现)