pathlibPython's pathlib module gives you an object-oriented way to inspect, create, and search directories without wrestling with string slashes. Every Path object works identically across Windows, Linux, and macOS paths.
You can check your current working directory with Path.cwd(), create nested directories in one call, and filter files recursively with glob patterns.
Pass parents=True, exist_ok=True to mkdir() so Python creates missing parent folders and never crashes if the directory already exists.
from pathlib import Path
export_dir = Path("reports") / "2026" / "november"
export_dir.mkdir(parents=True, exist_ok=True)
# List immediate entries or search recursively
py_files = sorted(Path(".").glob("*.py"))
all_json = list(Path(".").rglob("*.json"))
print("Created:", export_dir.is_dir())
print("Top-level .py count:", len(py_files))
When you need fine-grained pruning (such as skipping .git or node_modules folders before descending), os.walk() (or Path.walk() in Python 3.12+) lets you remove skipped folders from dirnames in place.
import os
for root, dirs, files in os.walk("."):
dirs[:] = [d for d in dirs if d not in {".git", ".venv", "__pycache__"}]
# Process remaining files cleanly
Path("a/b/c").mkdir() with defaults: Without parents=True, Python raises FileNotFoundError if "a/b" does not exist yet.os.chdir() inside library functions: Changing the global working directory breaks relative paths elsewhere in the program; pass explicit Path objects instead.glob("*.py") searches subfolders: glob() checks only the immediate directory; use rglob("*.py") for recursive search.iterdir() and glob("*")?iterdir() yields every immediate child (files and folders, including hidden dotfiles) quickly without pattern matching, while glob() filters names by wildcard pattern.
Use Path(__file__).resolve().parent to locate assets relative to your script regardless of where the user launched python from.
Call Path("old_name").rename("new_name"), or shutil.move() when moving across different disk drives.
Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.
Quick Access With
Experiment with the code from this lesson in our interactive playground.