首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

python金莲本-find

2012-11-15 
python小脚本-find#!/usr/bin/python#ecodingutf-8搜索某种文件内含有某关键字的文件名和文件行由于使

python小脚本-find

#!/usr/bin/python#ecoding=utf-8'''搜索某种文件内含有某关键字的文件名和文件行由于使用了python2.2,没有os.walk函数,自己写了使用命令模式'''import os,refilenamerep='.*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#版本太低,不能使用enumeratedef 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参数

热点排行