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的Django框架的运行方式及处理流程
Apr 08 Python
python一键升级所有pip package的方法
Jan 16 Python
Python实现批量读取图片并存入mongodb数据库的方法示例
Apr 02 Python
Python列表生成式与生成器操作示例
Aug 01 Python
python 剪切移动文件的实现代码
Aug 02 Python
python使用Plotly绘图工具绘制气泡图
Apr 01 Python
python实现抖音点赞功能
Apr 07 Python
解决yum对python依赖版本问题
Jul 05 Python
Python列表倒序输出及其效率详解
Mar 04 Python
keras实现调用自己训练的模型,并去掉全连接层
Jun 09 Python
如何解决python多种版本冲突问题
Oct 13 Python
python 实现网易邮箱邮件阅读和删除的辅助小脚本
Mar 01 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 mssql 时间格式问题
2009/01/13 PHP
php中使用sftp教程
2015/03/30 PHP
PHP将页面中点击数量高的链接进行高亮显示的方法
2016/05/30 PHP
CutePsWheel javascript libary 控制输入文本框为可使用滚轮控制的js库
2010/02/07 Javascript
js本身的局限性 别让javascript做太多事
2010/03/23 Javascript
盘点javascript 正则表达式中 中括号的【坑】
2016/03/16 Javascript
AngularJS 简单应用实例
2016/07/28 Javascript
JS判断是否在微信浏览器打开的简单实例(推荐)
2016/08/24 Javascript
JS IOS/iPhone的Safari浏览器不兼容Javascript中的Date()问题如何解决
2016/11/11 Javascript
详解js中==与===的区别
2017/01/08 Javascript
分享一个精简的vue.js 图片lazyload插件实例
2017/03/13 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
Python 正则表达式操作指南
2009/05/04 Python
举例讲解Python面向对象编程中类的继承
2016/06/17 Python
Python制作豆瓣图片的爬虫
2017/12/28 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
2018/05/17 Python
Python3字符串encode与decode的讲解
2019/04/02 Python
Python集合基本概念与相关操作实例分析
2019/10/30 Python
Html5 页面适配iPhoneX(就是那么简单)
2019/09/05 HTML / CSS
水芝澳美国官网:H2O Plus
2016/10/15 全球购物
阿玛瑞酒店中文官方网站:Amari.com
2018/02/13 全球购物
System.Array.CopyTo()和System.Array.Clone()有什么区别
2016/06/20 面试题
介绍一下XMLHttpRequest对象
2012/02/12 面试题
大学新生欢迎词
2014/01/10 职场文书
超市促销活动方案
2014/03/05 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
酒店总经理岗位职责
2015/04/01 职场文书
幼儿园国培研修日志
2015/11/13 职场文书
2016入党积极分子党课培训心得体会
2016/01/06 职场文书
《蟋蟀的住宅》教学反思
2016/02/17 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
2019年大学推荐信
2019/06/24 职场文书
《天净沙·秋思》教学反思三篇
2019/11/02 职场文书
Win11电脑显示本地时间与服务器时间不一致怎么解决?
2022/04/05 数码科技
js面向对象编程OOP及函数式编程FP区别
2022/07/07 Javascript