import json import os def get_exclude_paths(input_path, exclude_list=[]): """ Args: input_path: str 目标目录 exclude_list: list 排除文件或目录的相对位置 Returns: set 排除文件或目录的绝对路径集合 """ exclude_paths_set = set() if os.path.isdir(input_path): for path in exclude_list: abs_path = path if os.path.isabs(path) else os.path.join(input_path, path) if not os.path.exists(abs_path): print('Warning: exclude path not exists: {0}'.format(abs_path)) continue exclude_paths_set.add(abs_path) return exclude_paths_set def get_file_paths(input_path, suffix_list, exclude_list=[]): """ Args: input_path: str 目标目录 suffix_list: list 搜索的文件的后缀列表 exclude_list: list 排除文件或目录的相对位置 Returns: list 搜索到的相关文件绝对路径列表 """ exclude_paths_set = get_exclude_paths(input_path, exclude_list) for parent, _, filenames in os.walk(input_path): if parent in exclude_paths_set: print('Info: exclude path: {0}'.format(parent)) continue for filename in filenames: for suffix in suffix_list: if filename.endswith(suffix): file_path = os.path.join(parent, filename) break else: continue if file_path in exclude_paths_set: print('Info: exclude path: {0}'.format(file_path)) continue yield file_path def load_json(json_path): """ Args: json_path: str JSON文件路径 Returns: obj JSON对象 """ with open(json_path, 'r') as fp: output = json.load(fp) return output