python .find

场景:python金莲本-find

python小脚本-find
#!/usr/bin/python
#ecoding=utf-8
'''
搜索某种文件内含有某关键字的文件名和文件行
由于使用了python2.2,没有os.walk函数,自己写了
使用命令模式
'''
import os,re
filenamerep='.*jsp$'#文件匹配模式
path='/usr/local/tomcat/webapps/ROOT'#搜索路径,路径为绝对路径
contentrep=r'\bStatement\b'#每行文件要搜索的内容
result={}#匹配的结果数据存在map中,以文件的绝对路径名为key,vlaue为list,匹配的行数和内容为元祖的list,
logfile='searchresult.log'
def ismatch(path):
    
    global filenamerep
    if re.search(filenamerep, path):
        return True
    else:
        return False
#版本太低,不能使用enumerate
def handlefile(path):
    '''对文件的每行进行处理'''
    global result
    num=0
    for line in open(path,'r'):
        num=num+1
        if re.search(contentrep, line):
            if not result.get(path):#初始化列表
                result[path]=[]
            result[path].append((num,line))
def findfile(dir):
    '''找出符合规则的结果'''
    for i in os.listdir(dir):
        i=os.path.join(dir,i)#绝对路径
        if os.path.isfile(i):
            if ismatch(i):
                handlefile(i)
        if os.path.isdir(i):
            findfile(i)
def log():
    '''记录日志'''
    global logfile
    log=open(logfile,'w')
    for key in result.keys():
        li=result[key]
        log.write("文件:"+key+os.linesep)
        for i in li:
            log.write('    第'+str(i[0])+'行      '+i[1]+os.linesep)
if __name__=='__main__':
    if os.name=='nt':
        print '在windows下,请注意路径转义'
        findfile(path)
        log()
    else:
        findfile(path)
        log()
 

 

1 楼 cloverprince 2011-07-17  
是“grep -r -n”吧
2 楼 qiuboboy 2011-07-18  
cloverprince 写道
是“grep -r -n”吧

谢谢,我当时还不知道这个-n参数