Обход дерева каталогов
os.walk(top, topdown=True, onerror=None, followlinks=False)
- это функция из модуля os
в Python, которая генерирует имена файлов в дереве каталогов, обходя дерево сверху вниз или снизу вверх. По умолчанию os.walk()
генерирует имена файлов в дереве каталогов сверху вниз. Для каждой директории в дереве, корневой директорией которого является директория top (включая top саму), она возвращает 3-элементный кортеж (dirpath, dirnames, filenames).
Вот пример того, как можно использовать os.walk()
для вывода всех файлов в директории и ее поддиректориях:
import os
## Выводим все файлы в директории и ее поддиректориях
for root, dirs, files in os.walk('.'):
for file in files:
print(os.path.join(root, file))
Этот код начнет с текущей директории (указывается '.'), и рекурсивно пройдет по всем поддиректориям, выводя полный путь каждого файла, который он встретит.
Вот еще один пример, где можно использовать os.walk()
для поиска определенного файла с определенным расширением в директории:
import os
def search_file(directory, file_extension):
for root, dirs, files in os.walk(directory):
for file in files:
if file.endswith(file_extension):
print(os.path.join(root, file))
search_file('.','.txt')
Это будет искать все файлы с расширением '.txt' и выводить полный путь к файлу.
os.walk()
- это мощная функция, которая может быть использована для многих задач, таких как поиск файлов, анализ структуры директорий и т.д.
Следует отметить, что os.walk
- это генератор, что означает, что он генерирует значения по запросу, а не хранит их все в памяти. Это делает его эффективным для обработки больших деревьев каталогов.