各位用户为了找寻关于python实现搜索指定目录下文件及文件内搜索指定关键词的方法的资料费劲了很多周折。这里教程网为您整理了关于python实现搜索指定目录下文件及文件内搜索指定关键词的方法的相关资料,仅供查阅,以下为您介绍关于python实现搜索指定目录下文件及文件内搜索指定关键词的方法的详细内容

本文实例讲述了python实现搜索指定目录下文件及文件内搜索指定关键词的方法。分享给大家供大家参考。具体实现方法如下:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 #!/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.1" import os, time, fnmatch class 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     print if __name__ == "__main__":   search_path = r"c: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程序设计有所帮助。