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解惑之整数比较详解
Apr 24 Python
python装饰器实例大详解
Oct 25 Python
浅谈Tensorflow模型的保存与恢复加载
Apr 26 Python
使用Python获取并处理IP的类型及格式方法
Nov 01 Python
django 实现编写控制登录和访问权限控制的中间件方法
Jan 15 Python
基于python实现学生信息管理系统
Nov 22 Python
关于Numpy数据类型对象(dtype)使用详解
Nov 27 Python
python sorted函数原理解析及练习
Feb 10 Python
pytorch masked_fill报错的解决
Feb 18 Python
python numpy实现rolling滚动案例
Jun 08 Python
python interpolate插值实例
Jul 06 Python
python blinker 信号库
May 04 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学习笔记(二):变量详解
2015/04/17 PHP
PHP模板引擎smarty详细介绍
2015/05/26 PHP
php UNIX时间戳用法详解
2017/02/16 PHP
JQuery设置和去除disabled属性的5种方法总结
2013/05/16 Javascript
兼容ie、firefox的图片自动缩放的css跟js代码分享
2013/08/12 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
jquery实现可点击伸缩与展开的菜单效果代码
2015/08/31 Javascript
深入对Vue.js $watch方法的理解
2017/03/20 Javascript
使用gulp搭建本地服务器并实现模拟ajax
2017/04/05 Javascript
浅谈Vuejs中nextTick()异步更新队列源码解析
2017/12/31 Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
2019/02/01 Javascript
angularjs1.X 重构controller 的方法小结
2019/08/15 Javascript
vue iview 隐藏Table组件里的某一列操作
2020/11/13 Javascript
[49:29]LGD vs Winstrike 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
Python调用C++程序的方法详解
2017/01/24 Python
Python 利用高德地图api实现经纬度与地址的批量转换
2019/08/14 Python
python3.6生成器yield用法实例分析
2019/08/23 Python
python数组循环处理方法
2019/08/26 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
python主要用于哪些方向
2020/07/05 Python
Django Model层F,Q对象和聚合函数原理解析
2020/11/12 Python
澳大利亚百货公司:David Jones
2018/02/08 全球购物
联想韩国官网:Lenovo Korea
2018/05/10 全球购物
荷兰的时尚市场:To Be Dressed
2019/05/06 全球购物
幼教求职信
2014/03/12 职场文书
英文自荐信常用句子
2014/03/26 职场文书
亲子活动总结
2014/04/26 职场文书
小学庆六一活动总结
2014/08/28 职场文书
党的群众路线教育实践活动学习计划
2014/11/03 职场文书
2015年党风廉政建设责任书
2015/01/29 职场文书
不同意离婚答辩状
2015/05/22 职场文书
警示教育观后感
2015/06/17 职场文书
2019行政前台转正申请书范文3篇
2019/08/15 职场文书
7个你应该知道的JS原生错误类型
2021/04/29 Javascript
Javascript webpack动态import
2022/04/19 Javascript
Python可视化神器pyecharts之绘制地理图表练习
2022/07/07 Python