Программа Python для поиска всех .txt-файлов в каталоге

В этом примере покажем три способа найти все файлы с расширением .txt в каталоге.

Что нужно знать

Пример 1. Через glob

import glob, os

os.chdir("my_dir")

for file in glob.glob("*.txt"):
    print(file)

Вывод

c.txt
b.txt
a.txt

Модуль glob умеет искать файлы по шаблону:

  • os.chdir("my_dir") переключает текущий рабочий каталог на /my_dir.

  • В цикле for через glob() ищем файлы с расширением .txt.

  • * означает «любой набор символов» в начале имени.

Пример 2. Через os

import os

for file in os.listdir("my_dir"):
    if file.endswith(".txt"):
        print(file)

Вывод

a.txt
b.txt
c.txt

Здесь используем метод endswith() для проверки расширения .txt:

  • в цикле проходим по всем элементам каталога /my_dir;

  • для каждого имени проверяем, заканчивается ли оно на .txt.

Через os.walk

import os

for root, dirs, files in os.walk("my_dir"):
    for file in files:
        if file.endswith(".txt"):
            print(file)

Вывод

c.txt
b.txt
a.txt

Этот пример использует os.walk(), который рекурсивно обходит каталог:

  • для каждого файла из files проверяем, оканчивается ли имя на .txt.

Как это работает

glob хорош, когда нужен шаблонный поиск в одном каталоге. os.listdir + endswith() — простой способ для одного уровня, когда не хочется тащить glob. os.walk нужен, если файлы лежат во вложенных папках и хочется обойти всё дерево.