JustCaptain kod-buduschego
c70a58f596a8dfc2ab4b734e1775d88fdefe87b3
Перейти к файлу
Код
task_2.py
"""
2. Лог-файл по строкам
Есть большой лог-файл:
INFO User login
ERROR Database timeout
INFO User logout
...

Напишите генератор, который читает файл построчно и возвращает строки по одной.

Дополнительно

С помощью второго генератора оставьте только строки с ERROR.

Что отрабатывается

- ленивое чтение файлов
- генераторы как конвейер обработки

⸻

"""


def read_logs(path: str, type: str | None = None):
    with open(file=path, mode="r", encoding="utf-8") as file:
        while True:
            try:
                line: str = file.readline()
                if line == "":
                    raise StopIteration
                if type is None:
                    yield line
                if isinstance(type, str) and line.count(type) > 0:
                    yield line
            except StopIteration:
                break


logs = read_logs(path="logs.txt")
for log in logs:
    print(log)