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 相关文章推荐
pip 错误unused-command-line-argument-hard-error-in-future解决办法
Jun 01 Python
Python 详解基本语法_函数_返回值
Jan 22 Python
tensorflow TFRecords文件的生成和读取的方法
Feb 06 Python
基于python的图片修复程序(实现水印去除)
Jun 04 Python
Python将一个Excel拆分为多个Excel
Nov 07 Python
将tensorflow.Variable中的某些元素取出组成一个新的矩阵示例
Jan 04 Python
python时间与Unix时间戳相互转换方法详解
Feb 13 Python
Tensorflow中的降维函数tf.reduce_*使用总结
Apr 20 Python
Python ini文件常用操作方法解析
Apr 26 Python
基于pandas向csv添加新的行和列
May 25 Python
selenium设置浏览器为headless无头模式(Chrome和Firefox)
Jan 08 Python
详解matplotlib中pyplot和面向对象两种绘图模式之间的关系
Jan 22 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文件打包 下载之使用PHP自带的ZipArchive压缩文件并下载打包好的文件
2012/06/13 PHP
CodeIgniter模板引擎使用实例
2014/07/15 PHP
php实现发送微信模板消息的方法
2015/03/07 PHP
yii2-GridView在开发中常用的功能及技巧总结
2017/01/07 PHP
跨域表单提交状态的变相判断代码
2009/11/12 Javascript
多浏览器兼容的获取元素和鼠标的位置的js代码
2009/12/15 Javascript
javascript中使用css需要注意的地方小结
2010/09/01 Javascript
JavaScript的内存释放问题详解
2015/01/21 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
JQUERY简单按钮轮换选中效果实现方法
2015/05/07 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
jquery实现倒计时效果
2015/12/14 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
JS简单实现获取元素的封装操作示例
2017/04/07 Javascript
Vue自定义指令详解
2017/07/28 Javascript
EasyUI框架 使用Ajax提交注册信息的实现代码
2017/09/27 Javascript
vue axios 在页面切换时中断请求方法 ajax
2018/03/05 Javascript
浅谈vue中.vue文件解析流程
2018/04/24 Javascript
Javascript实现时间倒计时功能
2018/11/17 Javascript
[01:19:46]EG vs Secret 2019国际邀请赛淘汰赛 胜者组 BO3 第二场 8.21.mp4
2020/07/19 DOTA
python 字符串转列表 list 出现\ufeff的解决方法
2017/06/22 Python
Python 如何创建一个简单的REST接口
2020/07/30 Python
python Zmail模块简介与使用示例
2020/12/19 Python
Python .py生成.pyd文件并打包.exe 的注意事项说明
2021/03/04 Python
REISS美国官网:伦敦最受欢迎的时尚品牌
2019/08/16 全球购物
L’Artisan Parfumeur官网:法国香水品牌
2020/08/11 全球购物
如何为DataGridView添加一个定制的Column Type
2014/01/21 面试题
机电专业毕业生求职信
2013/10/27 职场文书
英文自荐信
2013/12/19 职场文书
机电一体化求职信
2014/03/10 职场文书
安全责任书范文
2014/03/12 职场文书
机械专业毕业生自我鉴定2014
2014/10/04 职场文书
大学迎新生标语
2014/10/06 职场文书
个人查摆问题自查报告
2014/10/16 职场文书
小学教师年度个人总结
2015/02/05 职场文书
go goth封装第三方认证库示例详解
2022/08/14 Golang