← До фільтрів та технологій

← До списку лабораторних по Python

Python Лабораторна 6: Обхід каталогу і фільтрація файлів

Технологія: Python

Номер лабораторної: 6 · Рівень: middle

Тема: Робота з файлами та pathlib

Повний опис / сценарій лабораторної:

Meta: навчитися працювати з файловою системою через pathlib замість сирих рядків шляхів.



Krok 1. Створити файл app/fs6.py.

Komandi: cd ~/python_lab1/src; touch app/fs6.py



Krok 2. Додати код який шукає усі .py файли у src.

Komanda: printf "from pathlib import Path

def find_py_files(base: str) -> list[Path]:
    root = Path(base)
    return list(root.rglob("*.py"))

if __name__ == "__main__":
    files = find_py_files("..")
    for p in files:
        print(p)
" > app/fs6.py



Krok 3. Запустити модуль і подивитися список файлів.

Komanda: export PYTHONPATH=$(pwd); python app/fs6.py



Krok 4. Додати фільтр за розміром файлу.

Komanda: printf "from pathlib import Path

def find_large_py(base: str, min_bytes: int):
    root = Path(base)
    for p in root.rglob("*.py"):
        if p.stat().st_size >= min_bytes:
            yield p

if __name__ == "__main__":
    for p in find_large_py("..", 50):
        print(p, "size", p.stat().st_size)
" > app/fs6.py



Krok 5. Повторно запустити і перевірити вивід.

Komanda: python app/fs6.py



Krok 6. Додати створення каталогу для звітів.

Komanda: python -c "from pathlib import Path; Path("reports6").mkdir(exist_ok=True)"



Krok 7. Записати результати у файл звіту.

Komanda: python -c "from app.fs6 import find_large_py; from pathlib import Path; lines = [str(p) for p in find_large_py("..", 50)]; Path("reports6/report.txt").write_text("
".join(lines))"



Krok 8. Переглянути звіт.

Komanda: cat reports6/report.txt



Krok 9. Занотувати переваги pathlib над os.path для читабельності.



Krok 10. Mini zvit.

Zavdannya: опиши як би ти організував інструмент аналізу логів на основі pathlib.