Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Приложение к уроку
См. также Приложение 1, Приложение 2, Приложение 3.
Ещё один механизм поиска по файловой системе
Ну и наконец ещё один способ обхода дерева каталогов файловой системы.
В библиотеке os есть замечательный метод walk(). Это метод позволяет осуществлять поиск по дереву файловой системы. При это в самой программе это просто цикл, так как реальный поиск по дереву происходит внутри метода.
Заголовок метода имеет структуру
os.walk(top, topdown=True, onerror=None, followlinks=False)
- Первый параметр содержит полный путь к каталогу, откуда будет осуществляться поиск.
- Второй параметр определяет куда осуществляется поиск: вверх или вниз по дереву.
- Во втором параметр указывается функция, которая будет вызвана с одним параметром, показывающем, какая ошибка произошла. Параметр представляет собой объект, содержащий ряд полей, уточняющих суть ошибки.
- Четвертый параметр определяет переходить или нет по символьной ссылке.
Метод по сути является итератором, позволяющим использовать его в цикле. На каждой итерации метод возвращает кортеж, состоящий из трёх элементов.
- Первый элемент — полное имя каталога, содержимое которого возвращается методом.
- Второй элемент — список элементов каталога, являющихся каталогами.
- Третий элемент — список элементов каталога, которые не являются каталогами.
Обратимся теперь к программе ниже. Это еще одна программа наряду с программами из Приложения 2 и Приложения 3. Она более проста и не содержит рекурсии.
Как видим программа очень проста. Но как всегда, когда вы доверяете часть работы библиотеки, надо понимать, что, возможно, она не делает. Я всегда предпочитаю более детальные собственные алгоритмы, которые позволяют держать управление в своих руках. Ну, кому как.
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.