diff --git a/apps/ops/models/playbook.py b/apps/ops/models/playbook.py index 2d3c1f409..e1188cb46 100644 --- a/apps/ops/models/playbook.py +++ b/apps/ops/models/playbook.py @@ -40,11 +40,16 @@ class Playbook(JMSOrgBaseModel): result = [] for root, dirs, files in os.walk(self.work_dir): for f in files: - if str(f).endswith('.yml') or str(f).endswith('.yaml'): - lines = self.search_keywords(os.path.join(root, f)) - if len(lines) > 0: - for line in lines: - result.append({'file': f, 'line': line[0], 'keyword': line[1]}) + try: + if str(f).endswith('.yml') or str(f).endswith('.yaml'): + lines = self.search_keywords(os.path.join(root, f)) + if len(lines) > 0: + for line in lines: + result.append({'file': f, 'line': line[0], 'keyword': line[1]}) + # 遇到无法读取的文件,跳过 + except UnicodeEncodeError: + continue + return result @staticmethod @@ -53,12 +58,12 @@ class Playbook(JMSOrgBaseModel): with open(file, 'r') as f: for line_num, line in enumerate(f): for keyword in dangerous_keywords: - clear_line = line.replace(' ', '')\ - .replace('\n', '')\ - .replace('\r', '')\ + clear_line = line.replace(' ', '') \ + .replace('\n', '') \ + .replace('\r', '') \ .replace('\t', '') \ .replace('\'', '') \ - .replace('\"', '')\ + .replace('\"', '') \ .replace('\v', '') if keyword in clear_line: result.append((line_num, keyword))