Python-指定关键字,在当前文件夹中.txt文件中递归搜索,并显示文件路径,关键词所在行数及位置

思路整理:

1.首先指定当前路径,然后利用iterdir()方法获取当前路径下所有的子文件和子文件夹
2.如果是子文件,要判断其是否为txt文件
如果是txt文件,迭代读取将每一行放在一个空列表中
在每一个txt文件对应的列表中依次检索关键词位置
3.如果是子文件夹,则把当前路径重新赋值,定位到子文件夹中,然后递归搜素即可

代码实现

from pathlib import Path

def searchstr(targetstr,decide):
    answer = ['YES','yes','Yes']
    p = Path('.')
    def searchRecur(p):
        for each in p.iterdir():
            if each.is_file() and each.suffix == '.txt':###确定为txt文件的条件
                f = each.open('r',encoding='utf-8')#each为符合条件的路径对象
                file_list = []#初始化空列表,按行存放
                for eachline in f:#迭代将每行存放在列表中
                    file_list.append(eachline)
                
               ####判断文件是否有关键词
                for n in file_list:
                    if  targetstr in n:
                        print(f'在文件【{each}】中找到关键字【{targetstr}】')
                        break
                 ###迭代读取列表,搜索关键词
                for i in range(len(file_list)):
                    index_list = []#用于统计每行出现关键字的索引位置
                    if  targetstr in file_list[i]:
                        count = file_list[i].count(targetstr)#统计固定行出现targetstr的次数
                        index = file_list[i].find(targetstr)#找到固定行的第一个索引位置
                        while count > 0 and index != -1:#获取每行索引的条件
                            index_list.append(index + 1)
                            index = file_list[i].find(targetstr,index+len(targetstr))
                            count = count -1
                        ###打印对应内容
                        index_list = str(index_list)
                        print(f'关键字出现在第{i+1}行,第个{index_list}位置')
                f.close()
            elif each.is_dir():
                p = each
                searchRecur(p)
                
    if decide in answer:
        searchRecur(p)
                

targetstr = input('请将该脚本放于待查找的文件夹内,请输入关键字:')
decide = input(f'请问是否需要打印【{targetstr}】关键字在文件中的具体位置(YES/NO):')
print('==========================================================')
searchstr(targetstr,decide)

实现效果

Python-指定关键字,在当前文件夹中.txt文件中递归搜索,并显示文件路径,关键词所在行数及位置_第1张图片

你可能感兴趣的:(Python学习,python)