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中dir函数用法分析
Apr 17 Python
Python实现复杂对象转JSON的方法示例
Jun 22 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
机器学习经典算法-logistic回归代码详解
Dec 22 Python
python实现简易通讯录修改版
Mar 13 Python
python生成密码字典的方法
Jul 06 Python
python openvc 裁剪、剪切图片 提取图片的行和列
Sep 19 Python
基于keras中的回调函数用法说明
Jun 17 Python
Python加速程序运行的方法
Jul 29 Python
Python使用struct处理二进制(pack和unpack用法)
Nov 12 Python
python 爬取英雄联盟皮肤并下载的示例
Dec 04 Python
python内置模块之上下文管理contextlib
Jun 14 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
BBS(php & mysql)完整版(八)
2006/10/09 PHP
PHP 遍历文件实现代码
2011/05/04 PHP
php中++i 与 i++ 的区别
2012/08/08 PHP
AJAX的使用方法详解
2017/04/29 PHP
读jQuery之一(对象的组成)
2011/06/11 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
简单实用的全选反选按钮例子
2013/10/18 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
2016/01/12 Javascript
Bootstrap导航条可点击和鼠标悬停显示下拉菜单的实现代码
2016/06/23 Javascript
Vue中封装input组件的实例详解
2017/10/17 Javascript
Vue三层嵌套路由的示例代码
2018/05/05 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
详解CommonJS和ES6模块循环加载处理的区别
2018/12/26 Javascript
JS中数据结构之栈
2019/01/01 Javascript
微信小程序获取当前位置和城市名
2019/11/13 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
下载安装setuptool和pip linux安装pip    
2014/01/24 Python
python进阶教程之模块(module)介绍
2014/08/30 Python
Python随手笔记第一篇(2)之初识列表和元组
2016/01/23 Python
python常见的格式化输出小结
2016/12/15 Python
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
python excel使用xlutils类库实现追加写功能的方法
2018/05/02 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
python 自动去除空行的实例
2018/07/24 Python
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
sklearn线性逻辑回归和非线性逻辑回归的实现
2020/06/09 Python
市场营销专业推荐信
2013/11/03 职场文书
学生自我鉴定
2013/12/18 职场文书
团日活动总结怎么写
2014/06/25 职场文书
大专应届毕业生求职信
2014/07/15 职场文书
关于感恩的演讲稿400字
2014/08/26 职场文书
医德医魂心得体会
2014/09/11 职场文书
入党转正申请报告
2015/05/15 职场文书
新娘婚礼答谢词
2015/09/29 职场文书
postgres之jsonb属性的使用操作
2021/06/23 PostgreSQL