Cómo corregir FileNotFoundError en Python

Publicado el: 11/07/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 erro MemoryError em aplicações Python
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    Cómo corregir MemoryError en Python

    Corrige MemoryError en Python con generadores, lotes, chunks de Pandas, tipos eficientes, tracemalloc y reducción de copias.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Detecção de vazamento de memória em aplicações Python
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    Cómo detectar fugas de memoria en Python

    Aprende a detectar fugas de memoria en Python con tracemalloc, gc, snapshots, cachés, generadores y análisis de referencias.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026
    Uso do cProfile para identificar gargalos em código Python
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    cProfile en Python: encuentra cuellos de botella

    Aprende a usar cProfile en Python para medir funciones, ordenar resultados, analizar pstats y optimizar cuellos de botella con evidencia.

    Ler mais

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

    Cómo corregir RecursionError en Python

    Corrige RecursionError en Python revisando casos base, progreso, ciclos, límites, memoización y conversiones de recursión a bucles o pilas.

    Ler mais

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

    Cómo corregir ModuleNotFoundError en Python

    Corrige ModuleNotFoundError en Python comprobando pip, intérprete, venv, sys.path, estructura de paquetes, Docker y nombres conflictivos.

    Ler mais

    Tempo de leitura: 4 minutos
    11/07/2026
    Como corrigir ImportError em projetos Python rapidamente
    Resolución de Errores
    Foto de perfil de Leandro Hirt da Academify

    Cómo corregir ImportError en Python paso a paso

    Aprende a corregir ImportError en Python: nombres ausentes, archivos conflictivos, imports circulares, entornos, versiones y rutas de módulos.

    Ler mais

    Tempo de leitura: 5 minutos
    11/07/2026