python实现搜索指定目录下文件及文件内搜索指定关键词的方法
本文实例讲述了python实现搜索指定目录下文件及文件内搜索指定关键词的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/bin/python-O #-*-coding:UTF-8-*- """ SuchtrekursivinDateiinhaltenundlistetdieFundstellenauf. """ __author__="JensDiemer" __license__="""GNUGeneralPublicLicensev2orabove- http://www.opensource.org/licenses/gpl-license.php""" __url__="http://www.jensdiemer.de" __version__="0.1" importos,time,fnmatch classsearch: def__init__(self,path,search_string,file_filter): self.search_path=path self.search_string=search_string self.file_filter=file_filter print"Search'%s'in[%s]..."%( self.search_string,self.search_path ) print"_"*80 time_begin=time.time() file_count=self.walk() print"_"*80 print"%sfilessearchedin%0.2fsec."%( file_count,(time.time()-time_begin) ) defwalk(self): file_count=0 forroot,dirlist,filelistinos.walk(self.search_path,followlinks=True): forfilenameinfilelist: forfile_filterinself.file_filter: iffnmatch.fnmatch(filename,file_filter): self.search_file(os.path.join(root,filename)) file_count+=1 returnfile_count defsearch_file(self,filepath): f=file(filepath,"r") content=f.read() f.close() ifself.search_stringincontent: printfilepath self.cutout_content(content) defcutout_content(self,content): current_pos=0 search_string_len=len(self.search_string) foriinxrange(max_cutouts): try: pos=content.index(self.search_string,current_pos) exceptValueError: break content_window=content[pos-content_extract:pos+content_extract] print">>>",content_window.encode("String_Escape") current_pos+=pos+search_string_len print if__name__=="__main__": search_path=r"c:\texte" file_filter=("*.py",)#fnmatch-Filter search_string="history" content_extract=35#Gr��edesAusschnittesderangezeigtwird max_cutouts=20#Max.AnzahlanTreffer,dieAngezeigtwerdensollen search(search_path,search_string,file_filter)
希望本文所述对大家的Python程序设计有所帮助。