glob - сопоставление имени файла с шаблоном
Модуль Glob выполняет поиск по всем именам пути в поисках файлов, соответствующих указанному шаблону, в соответствии с правилами, продиктованными оболочкой Unix. Полученные таким образом результаты возвращаются в произвольном порядке. Некоторые требования требуют обхода списка файлов в определенном месте, в основном имеющего определенный шаблон. Модуль Python glob имеет несколько функций, которые могут помочь в перечислении файлов, соответствующих заданному шаблону, в указанной папке.
Сопоставление с образцом выполняется с помощью функций os.scandir () и fnmatch.fnmatch () , а не путем фактического вызова вспомогательной оболочки. в отличие fnmatch.fnmatch (), glob рассматривает имена файлов, начинающиеся с точки (.), как особые случаи. Для расширения переменных тильды и оболочки используются функции os.path.expanduser () и os.path.expandvars () .
Правила паттернов
- Следуйте стандартным правилам расширения пути Unix.
- Поддерживаются специальные символы: два разных символа подстановки - *,? и диапазоны символов, выраженные в [].
- Правила шаблона применяются к сегментам имени файла (остановка на разделителе пути /).
- Пути в шаблоне могут быть относительными или абсолютными.
Заявление
- Это полезно в любой ситуации, когда вашей программе нужно искать в файловой системе список файлов с именами, соответствующими шаблону.
- Если вам нужен список имен файлов с определенным расширением, префиксом или любой общей строкой в середине, используйте glob вместо написания кода для самостоятельного сканирования содержимого каталога.
Функции в Glob:
- glob (pathname, *, recursive = False) - возвращает список имен путей, которые соответствуют заданному имени пути, который должен быть строкой, содержащей спецификацию пути. Список тоже может быть пустым.
- iglob (pathname, *, recursive = False) - этот метод создает объект-генератор Python, который используется для вывода списка файлов в заданном каталоге. Также возвращает итератор, который возвращает те же значения, что и glob (), без фактического сохранения их всех одновременно.
- escape (путь) - позволяет избежать заданной последовательности символов. Вы можете найти его удобным для поиска файлов с определенными символами в именах файлов и сопоставления произвольной буквальной строки, которая может содержать специальные символы.
Ниже приводится реализация, которая поможет вам понять, как этот модуль можно применить на практике:
Пример 1:
Python3
import glob # search .py files # in the current working directory for py in glob.glob( "*.py" ): print (py) |
Выход :
Пример 2: Программа для отображения подстановочных знаков и диапазонов
Если рекурсивно истинно, шаблон «**» будет соответствовать любым файлам и нулю или более каталогам, подкаталогам и символическим ссылкам на каталоги. Использование шаблона «**» в больших деревьях каталогов может занять чрезмерно много времени.
Python3
import glob # Using character ranges [] print ( 'Finding file using character ranges [] :- ' ) print (glob.glob( './[0-9].*' )) # Using wildcard character * print ( '
Finding file using wildcard character * :- ' ) print (glob.glob( '*.gif' )) # Using wildcard character ? print ( '
Finding file using wildcard character ? :- ' ) print (glob.glob( '?.gif' )) # Using recursive attribute print ( '
Finding files using recursive attribute :- ' ) print (glob.glob( '**/*.txt' , recursive = True )) |
Выход :
Пример 3:
Python3
import glob gen = glob.iglob( "*.py" ) # returns class type of gen type (gen) for py in gen: print (py) |
Выход :
Пример 4:
Python3
import glob char_seq = "-_#" for spcl_char in char_seq: esc_set = "*" + glob.escape(spcl_char) + "*" + ".py" for py in (glob.glob(esc_set)): print (py) |
Выход :
Внимание компьютерщик! Укрепите свои основы с помощью базового курса программирования Python и изучите основы.
Для начала подготовьтесь к собеседованию. Расширьте свои концепции структур данных с помощью курса Python DS. А чтобы начать свое путешествие по машинному обучению, присоединяйтесь к курсу Машинное обучение - базовый уровень.