Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.
Приложение 3 к уроку (Приложение 1, Приложение 2).
Продолжаем изучать вопрос поиска в файловой системе
Сподобился запустить Windows 10 на виртуалке и запустить на ней программу поиска из приложения 2. К моему удивлению поиск сработал, правда сама выдача абсолютных путей к файлам и каталогам выглядела странной. Но слава разработчикам Python.
А сегодня мы продолжим наши поиски поисков и воспользуемся кросплатформенными возможностями библиотеки os. А также воплотим в жизнь ещё один алгоритм поиска.
- Похоже он тянет с выкладыванием справочника по библиотеке os, - подумаете вы. И будете правы. В начале самое вкусное, т.е. программы и алгоритмы. А справочники будут.
Вернёмся к программе из предыдущего поста. В частности обратим внимание на функцию
Получение абсолютного имени файла осуществляется по правилам операционной системы Linux. Такой подход не соответствует правилам, принятым, например в Windows. Но как я уже сказал выше, Python обходит эти проблемы и срабатывает корректно. Однако, библиотека os, где это возможно предоставляет кроссплатформенные инструменты, позволяющие не думать (в некоторых аспектах) о различиях операционных систем.
В библиотеке os есть модуль path (или 'подбиблиотека', если хотите). И я в одной из статей остановлюсь на возможностях этого модуля. Но сегодня я просто перепишу программу поиска
Программа почти такая же, что и в предыдущем посте. Но вместо функции add() используется библиотечная os.path.join(). Она осуществляет объединение путей согласно правилам той операционной системы, в которой запускается. Замечу также, что остальные средства, используемые в программе, работают корректно в разных операционных системах.
Продолжу рассматривать вопрос о поиске по файловой системе. Попробуем несколько изменить подход к поиску. Можно ведь вместо того, чтобы формировать путь к тому или иному каталогу, делать его текущим.
Пояснение к программе.
Программа также рекурсивна и разница с предыдущей только в том, что операции производятся над текущим ка каталогом, а не над указанным через абсолютный путь к нему. Поэтому есть операция "сделать каталог текущим" и есть операции "сделать текущим родительский каталог".
Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.