Эффективные способы перечисления файлов в каталоге на основе заданного шаблона в Python

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

Методы вывода списка файлов в каталоге на основе заданного шаблона:

  1. Использование модуля glob:
    Модуль globпредоставляет удобный способ поиска файлов по определенному шаблону. В шаблоне поддерживаются подстановочные знаки в стиле Unix, такие как *и ?. Вот пример:
import glob
pattern = '*.txt'
files = glob.glob(pattern)
for file in files:
    print(file)
  1. Использование модуля os.
    Модуль osв Python предоставляет функции для взаимодействия с операционной системой. Мы можем использовать функцию os.listdir()для вывода списка всех файлов в каталоге, а затем фильтровать их по шаблону. Вот пример:
import os
pattern = '*.txt'
directory = '/path/to/directory'
files = [file for file in os.listdir(directory) if file.endswith(pattern)]
for file in files:
    print(file)
  1. Использование модуля fnmatch:
    Модуль fnmatchпредоставляет функции для сравнения имен файлов с подстановочными знаками в стиле Unix. Мы можем использовать функцию fnmatch.fnmatch()для фильтрации файлов по шаблону. Вот пример:
import fnmatch
import os
pattern = '*.txt'
directory = '/path/to/directory'
files = [file for file in os.listdir(directory) if fnmatch.fnmatch(file, pattern)]
for file in files:
    print(file)
  1. Использование регулярных выражений.
    Для более сложного сопоставления с образцом мы можем использовать регулярные выражения с модулем re. Вот пример:
import re
import os
pattern = r'^\d{4}-\d{2}-\d{2}_\w+\.txt$'
directory = '/path/to/directory'
files = [file for file in os.listdir(directory) if re.match(pattern, file)]
for file in files:
    print(file)