#!/usr/bin/env python
#-*- coding: utf-8 -*-import os
import reclassQuickSearchFile:'''快速寻找文件'''def file_name_search(self, file_dir_path, keyword):'''文件名字匹配'''search_result_array=[]for root, dirs, files inos.walk(file_dir_path):
# root 表示当前正在访问的文件夹路径
# dirs 表示该文件夹下的子目录名list
# files 表示该文件夹下的文件list
# 针对当前目录for file_name infiles:ifre.search(keyword, file_name):
search_result= os.path.join(root, file_name).replace('\\', '/')
search_result_array.append(search_result)returnsearch_result_array
def file_content_search(self, file_dir_path, keyword):'''文件内容匹配'''search_result_array=[]for root, dirs, files inos.walk(file_dir_path):for file_name infiles:
file_path=os.path.join(root, file_name)
print('----- 正在检索{} -----'.format(file_path))try:
with open(file_path,'rb') asf:
content= f.read().decode("utf8", 'ignore') # utf-8, gbk
f.close()
# 匹配ifre.search(keyword, content):
search_result_array.append(file_path.replace('\\', '/'))
except Exceptionase:
print('---- file_path: {} 不是可打开的文件 -----'.format(file_path))returnsearch_result_arrayif __name__ == '__main__':
obj=QuickSearchFile()
search_file_type= input('1: file_content(文件内容匹配), 2: file_name(文件名称匹配) 请输入搜索文件类型[1-2]:')whileTrue:if str(search_file_type) in ['1', '2']:
file_dir_path= input('请输入搜索文件所在的目录:')if not file_dir_path: file_dir_path = '/data/strategy/redis2mysql4decompression'# 测试
keyword= input('请输入需要搜索的内容:')if str(search_file_type) == '1':
search_result_array=obj.file_content_search(file_dir_path, keyword)
print('返回结果: 关键字keyword: {}, 所在的所有文件列表: {}'.format(keyword, search_result_array))
elif str(search_file_type)== '2':
search_result_array=obj.file_name_search(file_dir_path, keyword)
print('返回结果: 关键字keyword: {}, 所在的所有文件列表: {}'.format(keyword, search_result_array))else:
print('请重新输入, 选择[1-2]')