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


Posted in Python onJune 28, 2015

本文实例讲述了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 相关文章推荐
python使用多线程不断刷新网页的方法
Mar 31 Python
实例解析Python设计模式编程之桥接模式的运用
Mar 02 Python
快速排序的算法思想及Python版快速排序的实现示例
Jul 02 Python
Python socket实现的简单通信功能示例
Aug 21 Python
配置 Pycharm 默认 Test runner 的图文教程
Nov 30 Python
Python列表(list)所有元素的同一操作解析
Aug 01 Python
PyTorch的Optimizer训练工具的实现
Aug 18 Python
详解Python3 pandas.merge用法
Sep 05 Python
pycharm不能运行.py文件的解决方法
Feb 12 Python
python图形界面开发之wxPython树控件使用方法详解
Feb 24 Python
Flask缓存静态文件的具体方法
Aug 02 Python
Python如何创建装饰器时保留函数元信息
Aug 07 Python
分析用Python脚本关闭文件操作的机制
Jun 28 #Python
python实现linux下使用xcopy的方法
Jun 28 #Python
自动化Nginx服务器的反向代理的配置方法
Jun 28 #Python
python读取TXT到数组及列表去重后按原来顺序排序的方法
Jun 26 #Python
在Python中使用zlib模块进行数据压缩的教程
Jun 26 #Python
Python中的zipfile模块使用详解
Jun 25 #Python
Python实现保证只能运行一个脚本实例
Jun 24 #Python
You might like
随时给自己贴的图片加文字的php水印
2007/03/16 PHP
关于页面优化和伪静态
2009/10/11 PHP
php中用socket模拟http中post或者get提交数据的示例代码
2013/08/08 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
弹出模态框modal的实现方法及实例
2017/09/19 PHP
在textarea中屏蔽js的某个function的javascript代码
2007/04/20 Javascript
JavaScript 对象、函数和继承
2009/07/07 Javascript
Javascript 作用域使用说明
2009/08/13 Javascript
jquery 最简单的属性菜单
2009/10/08 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
jQuery实用函数用法总结
2014/08/29 Javascript
jQuery实现简单的文件上传进度条效果
2020/03/26 Javascript
js实现用户输入的小写字母自动转大写字母的方法
2017/01/21 Javascript
微信小程序之判断页面滚动方向的示例代码
2018/08/30 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
vue prop属性传值与传引用示例
2019/11/13 Javascript
Vue的props父传子的示例代码
2020/05/20 Javascript
浅析JavaScript 函数防抖和节流
2020/07/13 Javascript
使用vue编写h5公众号跳转小程序的实现代码
2020/11/27 Vue.js
python算法学习之基数排序实例
2013/12/18 Python
python实现计算倒数的方法
2015/07/11 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
numpy返回array中元素的index方法
2018/06/27 Python
Windows下Anaconda2安装NLTK教程
2018/09/19 Python
Python找出微信上删除你好友的人脚本写法
2018/11/01 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
css3类选择器之结合元素选择器和多类选择器用法
2017/03/09 HTML / CSS
英国最大的在线快递公司之一:ParcelHero
2019/11/04 全球购物
医学院毕业生自荐信范文
2014/03/06 职场文书
2014党员整改措施思想汇报
2014/10/07 职场文书
列车乘务员工作不细心检讨书
2014/10/07 职场文书
公司2014年度工作总结
2014/12/10 职场文书
工作检讨书大全
2015/01/26 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
Nginx虚拟主机的配置步骤过程全解
2022/03/31 Servers