Найти в Дзене
programmer's notes (python and more)

Стандартные библиотеки в Python. Библиотека os (поиск по файловой системе, продолжение). Приложение 3 к видео 10

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

Приложение 3 к уроку (Приложение 1, Приложение 2).

Продолжаем изучать вопрос поиска в файловой системе

Сподобился запустить Windows 10 на виртуалке и запустить на ней программу поиска из приложения 2. К моему удивлению поиск сработал, правда сама выдача абсолютных путей к файлам и каталогам выглядела странной. Но слава разработчикам Python.

А сегодня мы продолжим наши поиски поисков и воспользуемся кросплатформенными возможностями библиотеки os. А также воплотим в жизнь ещё один алгоритм поиска.

- Похоже он тянет с выкладыванием справочника по библиотеке os, - подумаете вы. И будете правы. В начале самое вкусное, т.е. программы и алгоритмы. А справочники будут.

Вернёмся к программе из предыдущего поста. В частности обратим внимание на функцию

Добавление имени файла к полному пути к каталогу, где файл находится
Добавление имени файла к полному пути к каталогу, где файл находится

Получение абсолютного имени файла осуществляется по правилам операционной системы Linux. Такой подход не соответствует правилам, принятым, например в Windows. Но как я уже сказал выше, Python обходит эти проблемы и срабатывает корректно. Однако, библиотека os, где это возможно предоставляет кроссплатформенные инструменты, позволяющие не думать (в некоторых аспектах) о различиях операционных систем.

В библиотеке os есть модуль path (или 'подбиблиотека', если хотите). И я в одной из статей остановлюсь на возможностях этого модуля. Но сегодня я просто перепишу программу поиска

Текст программы см. ниже
Текст программы см. ниже
primer69.py

Программа почти такая же, что и в предыдущем посте. Но вместо функции add() используется библиотечная os.path.join(). Она осуществляет объединение путей согласно правилам той операционной системы, в которой запускается. Замечу также, что остальные средства, используемые в программе, работают корректно в разных операционных системах.

Продолжу рассматривать вопрос о поиске по файловой системе. Попробуем несколько изменить подход к поиску. Можно ведь вместо того, чтобы формировать путь к тому или иному каталогу, делать его текущим.

Текст программы см. ниже
Текст программы см. ниже
primer70.py

Пояснение к программе.

Программа также рекурсивна и разница с предыдущей только в том, что операции производятся над текущим ка каталогом, а не над указанным через абсолютный путь к нему. Поэтому есть операция "сделать каталог текущим" и есть операции "сделать текущим родительский каталог".

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

- Ваша программа медленно обходит дерево. - Но она же обрабатывает каждую ветку, а их много.
- Ваша программа медленно обходит дерево. - Но она же обрабатывает каждую ветку, а их много.