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

作者:不吃皮蛋 时间:2023-06-22 22:49:41 

本文实例讲述了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.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程序设计有所帮助。

标签:python,搜索
0
投稿

猜你喜欢

  • Python对列表中的各项进行关联详解

    2023-10-26 20:19:34
  • 使用Filter过滤python中的日志输出的实现方法

    2022-08-25 06:37:43
  • Python的Tornado框架实现图片上传及图片大小修改功能

    2023-10-27 06:23:43
  • 解决Mac下使用python的坑

    2021-02-26 21:47:38
  • Python3中configparser模块读写ini文件并解析配置的用法详解

    2022-11-02 12:11:14
  • Python自动化办公之PPT段落的使用

    2023-07-10 07:09:24
  • Python tkinter 树形列表控件(Treeview)的使用方法

    2023-10-06 23:14:47
  • 怎样缩小SQL Server数据库的日志文件

    2009-01-15 13:08:00
  • Python退出时强制运行一段代码的实现方法

    2021-02-07 08:04:16
  • Django drf请求模块源码解析

    2023-06-07 10:03:07
  • ASP自动解压RAR文件代码

    2007-11-06 13:29:00
  • Python 机器学习库 NumPy入门教程

    2022-09-28 23:10:41
  • IE中雅黑字体给布局带来的变化

    2008-06-13 11:22:00
  • Python 多进程并发操作中进程池Pool的实例

    2022-06-28 16:31:37
  • 如何用Python和JS实现的Web SSH工具

    2021-04-23 13:50:13
  • Python的Django框架中forms表单类的使用方法详解

    2021-07-31 04:31:40
  • Oracle对两个数据表交集的查询

    2010-07-26 12:51:00
  • SQL Server误区30日谈 第30天 有关备份的30个误区

    2024-01-26 05:52:26
  • python/golang 删除链表中的元素

    2021-05-05 14:08:07
  • DIV+CSS常见错误及解决方法

    2008-04-25 22:46:00
  • asp之家 网络编程 m.aspxhome.com