Python Glossary English

все Python 3osфункция

os.walk()

обход

Генератор обхода дерева директорий. Для каждой папки возвращает (dirpath, dirnames, filenames).

Синтаксис

os.walk(top, topdown=True, onerror=None, followlinks=False)

Чтобы не заходить в ненужные каталоги, меняйте список dirnames на месте при topdown=True: dirnames[:] = [d for d in dirnames if d != '.git']. Присваивание новому имени не сработает — walk смотрит на тот же список. По умолчанию ошибки чтения каталогов молча пропускаются: недоступная папка просто не попадёт в обход; передайте onerror, чтобы о них узнать. По символическим ссылкам на каталоги walk не идёт, пока не задан followlinks=True.

Примеры

import os
for root, dirs, files in os.walk('.'):
    print(root)  # → текущая папка
all_py = []
for root, dirs, files in os.walk('.'):
    for f in files:
        if f.endswith('.py'):
            all_py.append(os.path.join(root, f))  # → все .py файлы рекурсивно
total = sum(len(files) for _, _, files in os.walk('.'))  # → общее число файлов
print(total)  # → кол-во файлов

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности