快速寻找文件
根据文件名字匹配, 根据文件内容匹配
#!/usr/bin/env python # -*- coding: utf-8 -*- import os import re class QuickSearchFile: ''' 快速寻找文件 ''' def file_name_search(self, file_dir_path, keyword): ''' 文件名字匹配 ''' search_result_array = [] for root, dirs, files in os.walk(file_dir_path): # root 表示当前正在访问的文件夹路径 # dirs 表示该文件夹下的子目录名list # files 表示该文件夹下的文件list # 针对当前目录 for file_name in files: if re.search(keyword, file_name): search_result = os.path.join(root, file_name).replace('\', '/') search_result_array.append(search_result) return search_result_array def file_content_search(self, file_dir_path, keyword): ''' 文件内容匹配 ''' search_result_array = [] for root, dirs, files in os.walk(file_dir_path): for file_name in files: file_path = os.path.join(root, file_name) print('----- 正在检索{} -----'.format(file_path)) try: with open(file_path, 'rb') as f: content = f.read().decode("utf8", 'ignore') # utf-8, gbk f.close() # 匹配 if re.search(keyword, content): search_result_array.append(file_path.replace('\', '/')) except Exception as e: print('---- file_path: {} 不是可打开的文件 -----'.format(file_path)) return search_result_array if __name__ == '__main__': obj = QuickSearchFile() search_file_type = input('1: file_content(文件内容匹配), 2: file_name(文件名称匹配) 请输入搜索文件类型[1-2]: ') while True: 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]')