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程序设计有所帮助。