什么软件可以搜python_用python编写一个高效搜索代码工具

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

# -*- coding: cp936 -*-

#代码准备工作

#由于需要获得文件的路径,所以要加载 os和system库

import os

import sys

#设定两个检索关键词keyword error和cc

keyword1 = 'error'

keyword2 = 'cc'

#设定一个排除的exclude_word bb

exclude_word = 'bb'

#设定一组指定的文件名,使用list结构以便动态扩展

file_name_list = [ '.sv', '.v', '.cpp', '.h']

#设定不参与检索的文件名,也使用list结构

exclude_file_name_list = [ '.bak ' ]

#指定一个search_path路径,把字符串留空,只初始化,为了实现在konsole界面实时捕捉当前路径

search_path = ' '

#准备工作完毕

#下面创建一个my_search函数,目的是为了实现递归查找子文件夹

#如果只需要查找当前目录层次的文件,则可以不使用函数

#传入参数为当前路径,为了实现递归查找子文件夹

def my_search ( search_path ):

#防错机制,判断当前路径是否存在

if os.path.exists( search_path ) :

#获得路径下所有文件文件夹的名字,并for循环遍历

for my_filename in os.listdir ( search_path ):

#把当前路径和文件名拼接成完整绝对路径

full_filepath = os.path.join ( search_path, my_filename )

#判断拼接出的完整路径是文件还是文件夹

if os.path.isfile (full_filepath):

#如果是文件,则对file_name_list中期望的文件名进行遍历

for my_extend in file_name_list :

#判断.cpp .sv等在文件名中

if my_extend in my_filename :

flag = True

#对exclude_file_name_list中不希望的文件名进行遍历

for my_exclude in exclude_file_name_list :

#若文件名有.bak就剔除

if my_exclude in my_filename:

flag = False

if flag: #文件名匹配已经命中

i = 0 #i作为文件行号

#逐行读取文件,碰到特大文件就不会卡死程序

for line in open ( full_filepath ) :

i=i+1 #每次读一行,i+1

#判断关键字1和2(error, cc)在该行中,并且exclude_word(bb)不在该行

if (keyword1 in line) and (keyword2 in line) and (exclude_word not in line):

#满足检索条件,打印文件完整路径,行号

print full_filepath , 'line',i,':'

print line #打印该行

#当前完整路径不是文件,而是文件夹

if os.path.isdir (full_filepath) :

#执行函数递归,继续到下一层文件夹目录查找,直到底层文件

my_search(full_filepath)

else : #防错机制,当前路径不存在,则报错

print search_path, 'path not exist!'

#这里相当于C语言主函数,程序从这里开始执行

search_path = os.getcwd () #从konsole获得当前路径,设为搜索路径

print search_path

my_search (search_path) #调用函数开始搜索

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值