您好,欢迎访问一九零五行业门户网

python实现搜索指定目录下文件及文件内搜索指定关键词的方法

本文实例讲述了python实现搜索指定目录下文件及文件内搜索指定关键词的方法。分享给大家供大家参考。具体实现方法如下:
#!/usr/bin/python -o# -*- coding: utf-8 -*-sucht rekursiv in dateiinhalten und listet die fundstellen auf.__author__ = jens diemer__license__ = gnu general public license v2 or above - http://www.opensource.org/licenses/gpl-license.php__url__ = http://www.jensdiemer.de__version__ = 0.1import os, time, fnmatchclass search: 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 %s files searched in %0.2fsec. % ( file_count, (time.time() - time_begin) ) def walk(self): file_count = 0 for root, dirlist, filelist in os.walk(self.search_path, followlinks=true): for filename in filelist: for file_filter in self.file_filter: if fnmatch.fnmatch(filename, file_filter): self.search_file(os.path.join(root, filename)) file_count += 1 return file_count def search_file(self, filepath): f = file(filepath, r) content = f.read() f.close() if self.search_string in content: print filepath self.cutout_content(content) def cutout_content(self, content): current_pos = 0 search_string_len = len(self.search_string) for i in xrange(max_cutouts): try: pos = content.index(self.search_string, current_pos) except valueerror: break content_window = content[ pos - content_extract : pos + content_extract ] print >>>, content_window.encode(string_escape) current_pos += pos + search_string_len printif __name__ == __main__: search_path = rc:\texte file_filter = (*.py,) # fnmatch-filter search_string = history content_extract = 35 # gr��e des ausschnittes der angezeigt wird max_cutouts = 20 # max. anzahl an treffer, die angezeigt werden sollen search(search_path, search_string, file_filter)
希望本文所述对大家的python程序设计有所帮助。
其它类似信息

推荐信息