В этой статье мы рассмотрим различные методы вывода списка файлов в каталоге на основе заданного шаблона с использованием Python. Мы предоставим примеры кода для каждого метода, что позволит вам выбрать тот, который лучше всего соответствует вашим потребностям. К концу этой статьи вы получите полное представление о различных подходах к эффективному выполнению этой задачи.
Методы вывода списка файлов в каталоге на основе заданного шаблона:
- Использование модуля
glob
:
Модульglob
предоставляет удобный способ поиска файлов по определенному шаблону. В шаблоне поддерживаются подстановочные знаки в стиле Unix, такие как*
и?
. Вот пример:
import glob
pattern = '*.txt'
files = glob.glob(pattern)
for file in files:
print(file)
- Использование модуля
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)
- Использование модуля
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)
- Использование регулярных выражений.
Для более сложного сопоставления с образцом мы можем использовать регулярные выражения с модулем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)