все 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Сообщить о неточности