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实现一个简单的能够发送带附件的邮件程序的教程
Apr 08 Python
python分析作业提交情况
Nov 22 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
May 04 Python
python射线法判断检测点是否位于区域外接矩形内
Jun 28 Python
python实现抠图给证件照换背景源码
Aug 20 Python
Django+zTree构建组织架构树的方法
Aug 21 Python
python2和python3应该学哪个(python3.6与python3.7的选择)
Oct 01 Python
Python库安装速度过慢解决方案
Jul 14 Python
python实现每天自动签到领积分的示例代码
Aug 18 Python
浅析Python 字符编码与文件处理
Sep 24 Python
pycharm永久激活超详细教程
Oct 29 Python
python实现马丁策略的实例详解
Jan 15 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实现定时生成HTML网站首页实例代码
2008/11/20 PHP
PHP is_dir() 判断给定文件名是否是一个目录
2010/05/10 PHP
PHP 实现判断用户是否手机访问
2015/01/21 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP Post获取不到非表单数据的问题解决办法
2018/02/27 PHP
Js+XML 操作
2006/09/20 Javascript
读jQuery之七 判断点击了鼠标哪个键的代码
2011/06/21 Javascript
对于jQuery性能的一些优化建议
2015/08/13 Javascript
基于jQuery倾斜打开侧边栏菜单特效代码
2015/09/15 Javascript
JavaScript调用传递变量参数的相关问题及解决办法
2015/11/01 Javascript
js通过指定下标或指定元素进行删除数组的实例
2017/01/12 Javascript
js轮播图的插件化封装详解
2017/07/17 Javascript
javaScript和jQuery自动加载简单代码实现方法
2017/11/24 jQuery
Vue使用枚举类型实现HTML下拉框步骤详解
2018/02/05 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
[53:15]Newbee vs Pain 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python检测一个对象是否为字符串类的方法
2015/05/21 Python
python爬虫框架scrapy实战之爬取京东商城进阶篇
2017/04/24 Python
Python排序搜索基本算法之选择排序实例分析
2017/12/09 Python
python实现数据库跨服务器迁移
2018/04/12 Python
celery4+django2定时任务的实现代码
2018/12/23 Python
python将字符串转换成json的方法小结
2019/07/09 Python
Python使用gluon/mxnet模块实现的mnist手写数字识别功能完整示例
2019/12/18 Python
pytorch之ImageFolder使用详解
2020/01/06 Python
Python ArgumentParse的subparser用法说明
2020/04/20 Python
python定时截屏实现
2020/11/02 Python
你不知道的5个HTML5新功能
2016/06/28 HTML / CSS
自我评价范文
2013/12/22 职场文书
幼教毕业生自我鉴定
2014/01/12 职场文书
2014年前台个人工作总结
2014/11/14 职场文书
中标通知书格式
2015/04/17 职场文书
2015暑期社会实践个人总结
2015/07/13 职场文书
浅谈spring boot使用thymeleaf版本的问题
2021/08/04 Java/Android
python Tkinter模块使用方法详解
2022/04/07 Python