您的位置 » 首页 » 编程开发 » python源码:分享一个在文件(夹)中快速查找包含字符串的行的脚本

python源码:分享一个在文件(夹)中快速查找包含字符串的行的脚本

发表于4年前 | 作者: seay | 分类: 编程开发 | 孵化于:2013年06月23日 | 文章热度:9,115 次 全屏阅读

显示不全请点击全屏阅读

分享一个在文件中快速查找字符串的脚步,根据 【python源码:windows类似linux wc统计文件行数python脚本】 稍微改的,速度很快

 

# -*- coding: GBK -*
# Author: Seay
# Blog :www.cnseay.com

import os,sys,re

findstr='';

def func_findstr(filepath):
    thefile=open(filepath, 'rb')
    while True:
        buffer = thefile.read(104857600)
        if not buffer:
            break
        for match in re.findall('\n.*'+findstr+'.*\n',buffer): 
            print "Found in "+filepath+" %s" % match
            print ''
    thefile.close()

def func_walks(path):
    for root, dirs, files in os.walk(path):
        for f in files:
            f = os.path.join(root, f)
            func_findstr(f)

def filterstr(str):
    str = str.replace('.','\.').replace('[','\[').replace(']','\]').replace('$','\$').replace('\\','\\\\')
    return str.replace('(','\(').replace(')','\)').replace('{','\{').replace('}','\}').replace('^','\^')
if __name__ == '__main__':
    if len(sys.argv)>=4 and (sys.argv[1]=='-f' or sys.argv[1]=='-d'):
        if sys.argv[1]=='-f' and os.path.isfile(sys.argv[2]):
            findstr = filterstr(sys.argv[3])
            func_findstr(sys.argv[2])
        elif sys.argv[1]=='-d' and os.path.exists(sys.argv[2]):
            findstr = filterstr(sys.argv[3])
            func_walks(sys.argv[2])
        else:
            print '-- 参数错误'
    elif len(sys.argv)==2:
        findstr = filterstr(sys.argv[1])
        print func_walks(os.getcwd())
    else:
        print '-- 参数说明 :'
        print '    1. '+sys.argv[0]+ ' -f' +' filename "string" \t在指定文件查找字符'
        print '    2. '+sys.argv[0]+ ' -d' +' directory "string" \t在指定目录(包括子目录)下的所有文件查找字符串'
        print '    3. '+sys.argv[0]+ ' "string" \t在当前目录(包括子目录)下的所有文件查找字符串'

 

 

Tags:

python源码,

如果您喜欢我的博客,欢迎点击图片定订阅到邮箱填写您的邮件地址,订阅我们的精彩内容: 也可以点击链接【订阅到鲜果】

如果我的想法或工具帮助到了你,也可微信扫下方二维码打赏本人一杯咖啡


来自 Seay互联网安全博客
本文地址:http://www.cnseay.com/3092/
文章版权说明请看置顶文章,尊重作者,转载请以链接形式标明原文地址

马上分享给你的朋友吧~

已经有1个筒子留下了脚印...

  • 古怪 说:
    1楼
    2014 年 10 月 15 日 下午 6:39 回复

    😮

发表评论

你的大名(必填)

你的邮箱(必填)

评论内容(必填)