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使用Flask框架同时上传多个文件的方法
Mar 21 Python
Python中static相关知识小结
Jan 02 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
Python将json文件写入ES数据库的方法
Apr 10 Python
Python代码太长换行的实现
Jul 05 Python
python和c语言的主要区别总结
Jul 07 Python
tensor和numpy的互相转换的实现示例
Aug 02 Python
Django stark组件使用及原理详解
Aug 22 Python
原来我一直安装 Python 库的姿势都不对呀
Nov 11 Python
python 读txt文件,按‘,’分割每行数据操作
Jul 05 Python
浅析Python的命名空间与作用域
Nov 25 Python
Python使用psutil库对系统数据进行采集监控的方法
Aug 23 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
smarty实现多级分类的方法
2014/12/05 PHP
PHP查找与搜索数组元素方法总结
2015/06/12 PHP
CodeIgniter钩子用法实例详解
2016/01/20 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
自己开发Dojo的建议框架
2008/09/24 Javascript
用Javascript实现锚点(Anchor)间平滑跳转
2009/09/08 Javascript
层序遍历在ExtJs的TreePanel中的应用
2009/10/16 Javascript
jquery.boxy弹出框(后隔N秒后自动隐藏/自动跳转)
2013/01/15 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
全面解析Bootstrap中tooltip、popover的使用方法
2016/06/13 Javascript
bootstrap监听滚动实现头部跟随滚动
2016/11/08 Javascript
Javascript(es2016) import和require用法和区别详解
2017/08/11 Javascript
详解使用Vue Router导航钩子与Vuex来实现后退状态保存
2017/09/11 Javascript
nodejs实现爬取网站图片功能
2017/12/14 NodeJs
Node.js的Koa实现JWT用户认证方法
2018/05/05 Javascript
angularjs1.5 组件内用函数向外传值的实例
2018/09/30 Javascript
基于vue实现web端超大数据量表格的卡顿解决
2019/04/02 Javascript
原生js实现五子棋游戏
2020/05/28 Javascript
openlayers4.6.5实现距离量测和面积量测
2020/09/25 Javascript
解决antd的Form组件setFieldsValue的警告问题
2020/10/29 Javascript
使用Python编写基于DHT协议的BT资源爬虫
2016/03/19 Python
python 捕获 shell/bash 脚本的输出结果实例
2017/01/04 Python
详解python中的 is 操作符
2017/12/26 Python
python用户评论标签匹配的解决方法
2018/05/31 Python
Django使用uwsgi部署时的配置以及django日志文件的处理方法
2019/08/30 Python
wxPython电子表格功能wx.grid实例教程
2019/11/19 Python
python模拟点击网页按钮实现方法
2020/02/25 Python
python类共享变量操作
2020/09/03 Python
联想香港官方网站及网店:Lenovo香港
2018/04/13 全球购物
软件测试题目
2013/02/27 面试题
计算机开发个人求职信范文
2013/09/26 职场文书
大学生简历中个人的自我评价
2013/10/06 职场文书
学习雷锋活动总结
2014/04/29 职场文书
坚守艰苦奋斗精神坚决反对享乐主义整改措施
2014/09/17 职场文书
浅谈Redis在直播场景的实践方案
2021/04/27 Redis
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS