Python – Verificar si existen archivos y carpetas

Tres preguntas: exists() —¿hay algo ahí?—, is_file() —¿es un archivo?— e is_dir() —¿es una carpeta?—. Y una advertencia: a menudo no hace falta preguntar.

Las tres preguntas

from pathlib import Path

print("is_dir :", Path("salida").is_dir(), Path("salida/notas.txt").is_dir())
print("is_file:", Path("salida/notas.txt").is_file(), Path("salida").is_file())
print("exists :", Path("salida").exists(), Path("nada").exists())
salidais_dir : True False
is_file: True False
exists : True False

exists() no distingue: dice que hay algo, sea archivo o carpeta. Si lo que vas a hacer después solo funciona con uno de los dos, pregunta por el tipo concreto. Con os son os.path.exists, os.path.isfile y os.path.isdir.

Comprobar o intentar

# comprobar y luego actuar
if ruta.exists():
    texto = ruta.read_text(encoding="utf-8")

# intentar y capturar
try:
    texto = ruta.read_text(encoding="utf-8")
except FileNotFoundError:
    texto = ""

Las dos funcionan casi siempre. La segunda es más segura: entre el exists() y la lectura, el archivo puede desaparecer, y entonces la primera falla de todas formas. Además, que exista no significa que puedas leerlo: puede faltarte permiso. La regla práctica:

Si quieres…Haz
Saber si existe, para mostrarlo o decidir algoexists(), is_file(), is_dir()
Leer, escribir o borrarinténtalo y captura la excepción
Crear una carpeta solo si no estámkdir(exist_ok=True), sin preguntar
Borrar solo si estáunlink(missing_ok=True), sin preguntar
La versión anterior de esta página ponía punto y coma al final de cada línea, como en Java o en C. En Python funciona, pero sobra y no se usa. También decía «El no archivo existe»: el mensaje correcto es «El archivo no existe».

Más información en inglés: Check if folders and files exist 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.