From 4a3db50d7df0f636ef824637d33330543e9044b2 Mon Sep 17 00:00:00 2001 From: Andrew Date: Wed, 24 Apr 2019 20:42:29 +0400 Subject: =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F=20=D1=82=D1=80=D0=B5=D1=82=D1=8C=D0=B5=D0=B9=20?= =?UTF-8?q?=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- day4/task3/db.py | 68 +++++++++++++++++++++++++++++++++++++++----------------- 1 file changed, 47 insertions(+), 21 deletions(-) (limited to 'day4/task3/db.py') diff --git a/day4/task3/db.py b/day4/task3/db.py index f4cbd0b..c23e9fb 100644 --- a/day4/task3/db.py +++ b/day4/task3/db.py @@ -2,30 +2,9 @@ import re import bisect 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.hour, date.minute, date.second, module, line)) - - else: - print(f'Ошибка при разборе строки:\n{line}') - - -db.sort() - def search_by_date(hour, minute=None, second=None, data=None): low = [hour] @@ -45,3 +24,50 @@ def search_by_date(hour, minute=None, second=None, data=None): left = bisect.bisect_left(db, tuple(low)) right = bisect.bisect_left(db, tuple(high)) return [t[4] for t in db[left:right] if data in t[3]] + + +def open_log(path): + try: + f = open(path) + + except FileNotFoundError: + print('Файл с логом не обнаружен') + return + + except PermissionError: + print('Файл с логом не доступен для чтения') + return + + return f + + +# Возвращает значение успешности инициализации базы данных +def init(path) -> bool: + f = open_log(path) + if f is None: + return False + + matcher = re.compile(r'\[(?P.*?)\]\[(?P.*?)\]\[(?P.*?)\]\[(?P.*?)\] (?P.*)') + + lines = f.readlines() + f.close() + for line in lines: + line = line.strip() + match = re.match(matcher, line) + + if match: + try: + date = datetime.strptime(match.group('date'), '%c') + except ValueError: + print(f'Ошибка при разборе строки (Неверный формат даты):\n{line}') + continue + + module = match.group('module') + + db.append((date.hour, date.minute, date.second, module, line)) + + else: + print(f'Ошибка при разборе строки:\n{line}') + + db.sort() + return True -- cgit v1.2.3