Un solo método, mkdir, y dos parámetros que deciden todo: exist_ok —¿pasa algo si ya existe?— y parents —¿creo también las carpetas de encima?—. Casi siempre quieres los dos.
También te puede interesar
Una carpeta
from pathlib import Path
d = Path("datos")
d.mkdir()Si ya existe, FileExistsError. Si falta la carpeta de encima:
Path("falta/intermedia").mkdir()salidaFileNotFoundError
Los dos parámetros
Path("datos").mkdir(exist_ok=True) # ya existe: no pasa nada
Path("datos/2026/octubre").mkdir(parents=True, exist_ok=True) # crea lo que faltesalidaexist_ok=True: sin quejas parents=True: True
Con los dos a la vez, mkdir hace lo que casi siempre quieres: asegurarse de que la carpeta está, exista ya o no. Es el equivalente de mkdir -p en la terminal, y se puede llamar al principio del programa sin preguntar antes.
OSError con un mensaje genérico —«La creación del directorio falló»—, que se traga el motivo real: si ya existía, si faltaba la de encima o si no había permiso. Con exist_ok y parents desaparecen los dos primeros casos, y el tercero conviene que llegue con su mensaje original.Con os
import os
os.makedirs("datos/2026/noviembre", exist_ok=True)os.makedirs crea la ruta entera, como parents=True. Cuidado con su hermano os.mkdir, que crea solo un nivel.
Carpetas temporales
import tempfile
with tempfile.TemporaryDirectory(prefix="decodigo-") as tmp:
print("temporal:", Path(tmp).name.startswith("decodigo-"), "en", Path(tmp).parent)
print("y al salir ya no existe:", Path(tmp).exists())salidatemporal: True en /tmp y al salir ya no existe: False
El sistema elige dónde, con un nombre que no choca con nada, y la borra entera al salir del with. Para trabajos que generan archivos intermedios es lo más limpio: no queda basura aunque el programa falle a mitad.
Más información en inglés: Create directories or folders in Python.
Todo el código se ejecutó con Python 3.14 en un contenedor limpio antes de publicar esta página; las salidas están copiadas de esa ejecución.