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.
También te puede interesar
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 algo | exists(), is_file(), is_dir() |
| Leer, escribir o borrar | inté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 |
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.