import logging from io import TextIOWrapper from utilsv2 import utils from utilsv2.log import logger from utilsv2.nordic import parse as n_parse logger = logging.getLogger(__name__) def read_file(fname: str) -> TextIOWrapper | OSError: try: fp = open(fname, "r", newline="\n") return fp except FileNotFoundError: return FileNotFoundError("Nenhum ficheiro encontrado") except PermissionError: return PermissionError("Sem permissões para abrir") def find_events(fp: TextIOWrapper) -> list[tuple[int, int]]: event_indices = [] event_start = -1 idx = 0 for line in fp.read().split("\n"): if event_start == -1: event_start = idx if utils.is_empty(line): event_indices.append((event_start, idx)) event_start = -1 idx += 1 logger.info("Found %d events", len(event_indices)) return event_indices def extract_event(fp: TextIOWrapper, event_bounds: list[tuple[int, int]]): lines = fp.read().split("\n") print(len(lines)) print(event_bounds) for event_idx in event_bounds: n_parse(lines[event_idx[0] : event_idx[1]]) def parse(fname: str) -> None: _ret = read_file(fname) if not isinstance(_ret, TextIOWrapper): logger.critical(_ret.__str__()) raise _ret events = find_events(_ret) _ret.seek(0) extract_event(_ret, events) # cleanup _ret.close()