При работе с файловыми системами часто возникают ситуации, когда вам необходимо перебирать подпапки внутри каталога. Python предоставляет несколько методов для эффективного выполнения этой задачи. В этой статье мы рассмотрим различные методы, сопровождаемые примерами кода, для циклического обхода подпапок в Python.
Методы перебора подпапок:
-
os.listdir() с os.path.join():
import os folder_path = '/path/to/folder' subfolders = [f for f in os.listdir(folder_path) if os.path.isdir(os.path.join(folder_path, f))] for subfolder in subfolders: print(subfolder) -
os.scandir() с is_dir():
import os folder_path = '/path/to/folder' subfolders = [entry.name for entry in os.scandir(folder_path) if entry.is_dir()] for subfolder in subfolders: print(subfolder) -
glob.glob():
import glob folder_path = '/path/to/folder' subfolders = glob.glob(os.path.join(folder_path, '*')) subfolders = [f for f in subfolders if os.path.isdir(f)] for subfolder in subfolders: print(os.path.basename(subfolder)) -
pathlib.Path.glob():
from pathlib import Path folder_path = Path('/path/to/folder') subfolders = [subfolder.name for subfolder in folder_path.iterdir() if subfolder.is_dir()] for subfolder in subfolders: print(subfolder) -
Рекурсивная функция:
import os def get_subfolders(folder_path): subfolders = [] for entry in os.scandir(folder_path): if entry.is_dir(): subfolders.append(entry.name) subfolders.extend(get_subfolders(entry.path)) return subfolders folder_path = '/path/to/folder' subfolders = get_subfolders(folder_path) for subfolder in subfolders: print(subfolder)
Python предлагает несколько методов для легкого перебора подпапок. В этой статье мы рассмотрели различные методы, в том числе os.listdir(), os.scandir(), glob.glob(), pathlib.Path.glob()и рекурсивная функция. Каждый метод имеет свои преимущества и может быть выбран исходя из конкретных требований. Используя эти методы, вы можете эффективно перебирать подпапки и выполнять различные операции в своих программах Python.