import re from datetime import datetime f = open('otrs_error.log') matcher = re.compile(r'\[(?P.*?)\]\[(?P.*?)\]\[(?P.*?)\]\[(?P.*?)\] (?P.*)') db = [] lines = f.readlines() f.close() for line in lines: line = line.strip() match = re.match(matcher, line) if match: date = datetime.strptime(match.group('date'), '%c') module = match.group('module') db.append({ 'date': date, 'type': match.group('type'), 'module': module, 'id': match.group('id'), 'text': match.group('text') }) else: print(f'Ошибка при разборе строки:\n{line}') def search_by_date(hour, minute=None, second=None, data=None): arr = [] print(f'filtering by h={hour}, m={minute}, s={second}, data="{data}"') for err in db: if err['date'].hour == int(hour): if minute is not None: if second is not None: if err['date'].minute == int(minute) and err['date'].second == int(second): if data in err['module']: _ = err.copy() _['date'] = _['date'].ctime() arr.append(_) else: if err['date'].minute == int(minute): if data in err['module']: _ = err.copy() _['date'] = _['date'].ctime() arr.append(_) else: if data in err['module']: _ = err.copy() _['date'] = _['date'].ctime() arr.append(_) return arr