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实现的HMacMD5加密算法示例
Apr 03 Python
解决python3爬虫无法显示中文的问题
Apr 12 Python
使用python爬虫获取黄金价格的核心代码
Jun 13 Python
python识别图像并提取文字的实现方法
Jun 28 Python
Python使用线程来接收串口数据的示例
Jul 02 Python
Django REST framework 如何实现内置访问频率控制
Jul 23 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
django框架forms组件用法实例详解
Dec 10 Python
Python3 集合set入门基础
Feb 10 Python
Python连接Oracle之环境配置、实例代码及报错解决方法详解
Feb 11 Python
将python文件打包exe独立运行程序方法详解
Feb 12 Python
python缩进长度是否统一
Aug 02 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
搜索和替换文件或目录的一个好类--很实用
2006/10/09 PHP
PHP Squid中可缓存的动态网页设计
2008/09/17 PHP
php递归使用示例(php递归函数)
2014/02/14 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
PHP实现对文本数据库的常用操作方法实例演示
2014/07/04 PHP
使用PHP和JavaScript判断请求是否来自微信内浏览器
2015/08/18 PHP
学习php设计模式 php实现命令模式(command)
2015/12/08 PHP
yii分页组件用法实例分析
2015/12/28 PHP
PHP中strncmp()函数比较两个字符串前2个字符是否相等的方法
2016/01/07 PHP
PHP-FPM和Nginx的通信机制详解
2019/02/01 PHP
jQuery中bind,live,delegate与one方法的用法及区别解析
2013/12/30 Javascript
用IE重起计算机或者关机的示例代码
2014/03/10 Javascript
使用typeof方法判断undefined类型
2014/09/09 Javascript
jquery使用正则表达式验证email地址的方法
2015/01/22 Javascript
JS简单实现点击按钮或文字显示遮罩层的方法
2017/04/27 Javascript
Node.js 基础教程之全局对象
2017/08/06 Javascript
jQuery实现的文字逐行向上间歇滚动效果示例
2017/09/06 jQuery
Javasript设计模式之链式调用详解
2018/04/26 Javascript
json解析大全 双引号、键值对不在一起的情况
2019/12/06 Javascript
python基于queue和threading实现多线程下载实例
2014/10/08 Python
python实现的简单窗口倒计时界面实例
2015/05/05 Python
Python采用Django制作简易的知乎日报API
2016/08/03 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
Python3之不使用第三方变量,实现交换两个变量的值
2019/06/26 Python
Python中turtle库的使用实例
2019/09/09 Python
python程序文件扩展名知识点详解
2020/02/27 Python
OpenCV图片漫画效果的实现示例
2020/08/18 Python
python中如何使用虚拟环境
2020/10/14 Python
W Concept美国:精选全球独立设计师
2017/02/22 全球购物
捷克体育用品购物网站:D-sport
2017/12/28 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
韩国商务邀请函
2014/01/14 职场文书
电子商务助理求职自荐信
2014/04/10 职场文书
公司周年庆寄语
2019/06/21 职场文书
Nginx代理同域名前后端分离项目的完整步骤
2021/03/31 Servers
MySQL pt-slave-restart工具的使用简介
2021/04/07 MySQL