Как найти файлы с определенным расширением только на Python
-
Метод поиска файлов с определённым расширением
glob.glob
-
Метод
os.listdir()
для поиска файлов с определённым расширением -
Метод
pathlib.glob
для поиска файлов с определённым расширением - Поиск файлов с определенным расширением в каталоге и его подкаталогах на Python
-
Модуль
pathlib
ищет файлы рекурсивно

В статье представлены различные методы поиска файлов с определённым расширением только на Python.
Метод поиска файлов с определённым расширением glob.glob
Мы могли бы использовать модуль glob.glob
для поиска файлов с определённым расширением только на Python.
import glob
targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)
Приведенные выше коды демонстрируют, как найти файлы с расширением txt
в директории C:\Test
.
Метод os.listdir()
для поиска файлов с определённым расширением
Функция os.listdir()
перечисляет все файлы в данной директории, без информации о пути к файлу. Вы можете извлечь файлы с определенным расширением, используя функцию str.endswith()
.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']
Вам необходимо построить полный путь с помощью функции os.path.join()
.
>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']
Метод pathlib.glob
для поиска файлов с определённым расширением
pathlib
модуль представлен на Python 3.4, который предлагает объектно-ориентированные пути к файловой системе. Он предоставляет два стиля: Пути Windows в ОС Windows и пути POSIX в Unix-alike системах.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]
Результат представлен с помощью WindowsPath
, и вы можете преобразовать результат в строковое представление, добавив str()
, типа
>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']
Поиск файлов с определенным расширением в каталоге и его подкаталогах на Python
Шаблон C:\Test\*.txt
ищет только txt
файлы в каталоге C:\Test
, но не в его подкаталогах. Если вы также хотите получить txt
файлы в подкаталогах, вы можете немного изменить шаблон.
import glob
targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)
Подстановка **
между Test
и \*.txt
означает, что он должен найти txt
файлы как в каталоге, так и в его подкаталогах.
Модуль pathlib
ищет файлы рекурсивно
Подобно добавлению **
в glob.glob
для рекурсивного поиска файлов, вы также можете добавить **
в pathlib.Path.glob
метод для рекурсивного поиска файлов с определённым расширением.
>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedInСопутствующая статья - Python File
- Как получить все файлы каталога
- Как удалить файл и каталог на Python
- Как добавить текст к файлу в Python
- Как проверить, существует ли файл на Python
- Откройте zip-файл, не распаковывая его в Python