FileNotFoundError: corrige rutas en Python

Actualizado el: 20/08/2026
Tempo de leitura: 5 minutos
Como resolver problemas de caminhos de arquivos em scripts Python

El error FileNotFoundError en Python aparece cuando un programa intenta abrir, leer, mover, renombrar o eliminar un archivo que no existe en la ruta utilizada. En muchos casos el archivo sí está guardado en el ordenador, pero el script busca desde otro directorio, utiliza una extensión diferente o construye una ruta incompatible con el entorno donde se ejecuta.

La solución correcta no consiste en capturar la excepción y continuar sin entenderla. Primero debes comprobar la ruta efectiva, el directorio de trabajo, el nombre del archivo y el momento en que debería haberse creado.

Ejemplo básico

with open("report.txt", encoding="utf-8") as file:
    content = file.read()

Si report.txt no se encuentra en el directorio actual, Python genera un mensaje parecido a:

FileNotFoundError: [Errno 2] No such file or directory

La documentación oficial de FileNotFoundError explica que esta excepción representa un intento de acceder a una ruta inexistente.

Comprobar el directorio actual

from pathlib import Path

print(Path.cwd())

Una ruta relativa se interpreta desde el directorio de trabajo, no necesariamente desde la carpeta que contiene el script. Un editor, una tarea programada, un notebook o un servidor pueden iniciar el proceso desde otra ubicación.

La documentación oficial de pathlib describe la construcción y resolución de rutas en diferentes sistemas operativos. La guía interna de pathlib en Python ofrece ejemplos adicionales de lectura, escritura y navegación.

Construir la ruta desde el archivo del script

from pathlib import Path

BASE_DIR = Path(__file__).resolve().parent
DATA_FILE = BASE_DIR / "data" / "report.txt"

with DATA_FILE.open(encoding="utf-8") as file:
    content = file.read()

Este patrón evita depender de la carpeta desde la que se ejecuta el comando. resolve() produce una ruta absoluta y parent selecciona la carpeta del archivo actual.

Comprobar si la ruta existe

from pathlib import Path

path = Path("data/report.txt")

print(path.exists())
print(path.is_file())
print(path.is_dir())
print(path.resolve())

exists() comprueba cualquier entrada. is_file() y is_dir() distinguen archivos y carpetas. Mostrar la ruta absoluta suele revelar inmediatamente que el programa está buscando en un lugar inesperado.

Crear carpetas antes de escribir

from pathlib import Path

output = Path("reports") / "monthly.txt"
output.parent.mkdir(
    parents=True,
    exist_ok=True,
)
output.write_text(
    "Informe generado\n",
    encoding="utf-8",
)

El modo de escritura puede crear el archivo, pero no crea automáticamente las carpetas intermedias. parents=True crea toda la jerarquía ausente y exist_ok=True evita un error cuando ya existe.

Revisar nombre, extensión y mayúsculas

Comprueba que el archivo no tenga una extensión oculta, como report.txt.txt. En sistemas que distinguen mayúsculas y minúsculas, Report.csv y report.csv son nombres diferentes.

from pathlib import Path

folder = Path("data")

if folder.is_dir():
    for path in folder.iterdir():
        print(repr(path.name))

repr() ayuda a detectar espacios finales, caracteres invisibles y diferencias de capitalización.

Evitar barras manuales

# Frágil
path = folder + "/" + filename

# Portable
path = Path(folder) / filename

En Windows, una string normal también puede interpretar secuencias como \n o \t. Pathlib evita gran parte de estos problemas y hace que el código sea más legible.

Leer archivos de texto de forma segura

from pathlib import Path

path = Path("notes.txt")

try:
    content = path.read_text(encoding="utf-8")
except FileNotFoundError:
    print(f"No existe el archivo: {path.resolve()}")
else:
    print(content)

La guía de archivos de texto en Python explica lectura, escritura, append, codificación y procesamiento línea por línea.

Capturar la excepción en la capa correcta

Una función de bajo nivel puede dejar que la excepción continúe o añadir información que facilite el diagnóstico:

from pathlib import Path


def load_template(path):
    path = Path(path)

    try:
        return path.read_text(encoding="utf-8")
    except FileNotFoundError as error:
        raise FileNotFoundError(
            f"No se encontró la plantilla: {path.resolve()}"
        ) from error

El encadenamiento conserva el traceback original. La guía de try y except en Python explica captura específica, else, finally y raise from.

Utilizar un valor predeterminado solamente cuando sea válido

from pathlib import Path
import json

DEFAULT_CONFIG = {
    "theme": "light",
    "page_size": 20,
}

path = Path("config.json")

if path.is_file():
    config = json.loads(
        path.read_text(encoding="utf-8")
    )
else:
    config = DEFAULT_CONFIG.copy()

Esta estrategia funciona cuando el archivo es opcional. No la utilices para ocultar la ausencia de una base de datos, plantilla o certificado obligatorio.

Buscar archivos con glob()

from pathlib import Path

files = list(Path("incoming").glob("*.csv"))

if not files:
    print("No se encontraron archivos CSV")
else:
    for path in files:
        print(path)

Una búsqueda resulta más adecuada que asumir un nombre fijo cuando los archivos incluyen fechas, identificadores o sufijos generados por otro sistema.

Mover y renombrar archivos

from pathlib import Path

source = Path("incoming/report.csv")
target = Path("processed/report.csv")

target.parent.mkdir(parents=True, exist_ok=True)

if not source.is_file():
    raise FileNotFoundError(
        f"No existe el origen: {source.resolve()}"
    )

source.replace(target)

La guía del módulo os en Python muestra operaciones adicionales con archivos, carpetas, permisos y variables de entorno.

Docker, servidores y tareas programadas

Una ruta disponible en tu ordenador puede faltar dentro de un contenedor. Comprueba qué archivos fueron copiados, cuál es el directorio de trabajo y qué volúmenes están montados.

WORKDIR /app
COPY config/ /app/config/
COPY src/ /app/src/

Un script ejecutado por cron o Task Scheduler también puede comenzar en otra carpeta. Utiliza rutas absolutas derivadas de __file__ y registra la ruta resuelta, sin incluir contenido sensible.

Utilizar with para cerrar archivos

with open(
    "data/report.txt",
    encoding="utf-8",
) as file:
    for line in file:
        print(line.rstrip())

La guía de with en Python explica context managers, cierre automático y varios recursos.

Pruebas con archivos temporales

from pathlib import Path
from tempfile import TemporaryDirectory

with TemporaryDirectory() as folder:
    path = Path(folder) / "sample.txt"
    path.write_text("example", encoding="utf-8")
    assert path.read_text(encoding="utf-8") == "example"

Las pruebas no deberían depender de archivos personales ni carpetas permanentes. Los directorios temporales permiten preparar y eliminar datos automáticamente.

Script de diagnóstico

from pathlib import Path

path = Path("data/report.txt")

print("Directorio actual:", Path.cwd())
print("Ruta recibida:", path)
print("Ruta absoluta:", path.resolve())
print("Existe:", path.exists())
print("Es archivo:", path.is_file())
print("Carpeta padre existe:", path.parent.exists())

Procedimiento recomendado

  1. Imprime la ruta absoluta.
  2. Comprueba Path.cwd().
  3. Revisa nombre, extensión y mayúsculas.
  4. Comprueba si la carpeta padre existe.
  5. Construye la ruta desde __file__.
  6. Verifica Docker, tareas programadas o volúmenes.
  7. Captura la excepción solamente cuando puedas responder correctamente.

Errores frecuentes

  • Suponer que una ruta relativa parte del archivo del script.
  • Concatenar barras manualmente.
  • No crear carpetas intermedias.
  • Ignorar mayúsculas y extensiones.
  • Capturar FileNotFoundError y continuar con datos incompletos.
  • Usar una ruta local dentro de Docker o producción.
  • Depender de archivos personales en pruebas.

Conclusión

FileNotFoundError se resuelve observando la ruta que Python utiliza realmente. Comprueba el directorio actual, utiliza pathlib, crea carpetas antes de escribir y deriva rutas estables desde __file__. Captura la excepción solo cuando exista una alternativa válida o cuando puedas añadir un mensaje más útil.

Compartilhe:

Facebook
WhatsApp
Twitter
LinkedIn

Contenido del artículo

    Artículos relacionados

    Como resolver erros com variáveis de ambiente usando python-dotenv
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    Cómo corregir errores de .env en Python con python-dotenv

    Corrige errores de .env con python-dotenv: rutas, find_dotenv, prioridad, booleanos, enteros, variables obligatorias, Git y secretos seguros.

    Ler mais

    Tempo de leitura: 4 minutos
    12/07/2026
    Como resolver loop infinito que nunca termina em Python
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    Bucles infinitos en Python: causas y soluciones

    Identifica y corrige bucles infinitos en Python revisando condiciones, incrementos, continue, entrada, timeouts, límites y depuración con pdb.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Como identificar e corrigir erros de sintaxe em Python
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    SyntaxError: corrige errores de sintaxis en Python

    Corrige SyntaxError en Python revisando tracebacks, dos puntos, delimitadores, comillas, indentación, operadores, f-strings y versiones incompatibles.

    Ler mais

    Tempo de leitura: 6 minutos
    11/07/2026
    Erro Python not recognized no terminal do Windows
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    “Python no se reconoce”: corrige PATH en Windows

    Corrige “Python no se reconoce” en Windows revisando instalación, PATH, Python Launcher, alias de Microsoft Store, VS Code y pip.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Debug de código Python usando o módulo pdb
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    pdb: depura Python con breakpoints y pila

    Aprende a depurar Python con pdb: breakpoint, next, step, pila de llamadas, condiciones, post mortem, variables y buenas prácticas.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Como resolver erro PermissionError em Python rapidamente
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    PermissionError: corrige permisos en Python

    Corrige PermissionError en Python revisando rutas, carpetas protegidas, archivos bloqueados, permisos, servicios y manejo seguro de excepciones.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026