Как использовать модуль glob в Python для поиска файлов по шаблону

Модуль glob в Python — это мощный инструмент для поиска файлов и каталогов, соответствующих указанному шаблону. Он особенно полезен, когда вам нужно искать файлы с определенными расширениями или именами в каталоге. Эта статья покажет вам, как использовать модуль glob для эффективного поиска файлов.

Введение в модуль glob

Модуль glob предоставляет способ перечислить файлы и каталоги с использованием подстановочных знаков в стиле оболочки Unix. Это полезно для таких задач, как поиск файлов, пакетная обработка и т. д. Модуль включает функции, которые позволяют сопоставлять имена файлов с шаблонами, что упрощает управление файлами.

Базовое использование glob

Чтобы использовать модуль glob, вам нужно импортировать его, а затем использовать функцию glob.glob() для поиска файлов, соответствующих шаблону. Шаблоны, которые вы используете, могут включать подстановочные знаки, такие как * (соответствует любому количеству символов) и ? (соответствует одному символу).

Примеры

Поиск файлов с определенным расширением

Например, чтобы найти все файлы с расширением .txt в каталоге, можно использовать:

import glob

# Find all .txt files in the current directory
txt_files = glob.glob('*.txt')
print(txt_files)

Поиск файлов в подкаталоге

Чтобы найти все файлы с определенным расширением в подкаталоге, укажите подкаталог в шаблоне:

import glob

# Find all .jpg files in the 'images' subdirectory
jpg_files = glob.glob('images/*.jpg')
print(jpg_files)

Использование подстановочных знаков

Подстановочные знаки могут помочь вам сопоставить более широкий диапазон файлов. Например, чтобы найти все текстовые файлы, начинающиеся с "report":

import glob

# Find all files starting with 'report' and ending with .txt
report_files = glob.glob('report*.txt')
print(report_files)

Поиск файлов с несколькими расширениями

Вы также можете использовать glob для поиска файлов с несколькими расширениями, используя шаблон, включающий несколько совпадений с подстановочными знаками:

import glob

# Find all .txt and .md files
files = glob.glob('*.txt') + glob.glob('*.md')
print(files)

Расширенное использование

В дополнение к простым шаблонам, модуль glob поддерживает более сложные шаблоны. Например, вы можете использовать шаблоны типа ** для рекурсивного поиска в каталогах.

Рекурсивный поиск

Для рекурсивного поиска файлов во всех подкаталогах используйте шаблон ** вместе с аргументом recursive=True:

import glob

# Find all .py files in the current directory and subdirectories
py_files = glob.glob('**/*.py', recursive=True)
print(py_files)

Заключение

Модуль glob — это важный инструмент для управления файлами в Python, позволяющий вам легко искать файлы, используя шаблоны. Независимо от того, работаете ли вы с определенными типами файлов, ищете в каталогах или выполняете сложный поиск, glob предоставляет простое и эффективное решение.