Lingua-e
← Errores
Python

Qué significa NotADirectoryError y cómo solucionarlo

Referencia del error

NotADirectoryError

Lenguaje

Python

Severidad

Media

Cuándo ocurre

NotADirectoryError se lanza cuando se intenta realizar una operación de directorio en una ruta que no es un directorio.

Posibles soluciones

Siempre valida las rutas con Path.is_dir() antes de realizar operaciones de directorio. Usa pathlib para un manejo de rutas más claro. Al construir rutas dinámicamente, verifica cada componente para detectar desajustes inesperados archivo-vs-directorio de forma temprana.

Más detalles

NotADirectoryError se lanza cuando se intenta realizar una operación de directorio en una ruta que no es un directorio. Es una subclase de OSError. Ocurre comúnmente cuando se pasa una ruta de archivo donde se espera una ruta de directorio.

Por qué ocurre

  • Llamar a os.listdir() o Path.iterdir() en una ruta de archivo.
  • Usar os.chdir() con una ruta que apunta a un archivo.
  • Un componente de ruta en una ruta más larga resuelve a un archivo en lugar de un directorio.
  • Pasar la variable incorrecta a una función que espera un directorio.

Posibles soluciones

Siempre valida las rutas con Path.is_dir() antes de realizar operaciones de directorio. Usa pathlib para un manejo de rutas más claro. Al construir rutas dinámicamente, verifica cada componente para detectar desajustes inesperados archivo-vs-directorio de forma temprana.

Ejemplos

Python

Código que causa el error

import os
os.listdir("myfile.txt")  # it's a file, not a directory

Error en la terminal

NotADirectoryError: [Errno 20] Not a directory: 'myfile.txt'

Código corregido

from pathlib import Path

p = Path("myfile.txt")
if p.is_dir():
    for item in p.iterdir():
        print(item)
else:
    print(f"{p} is not a directory")

Practica en inglés

¿Cómo le explicarías un NotADirectoryError a un compañero dev? Elige la frase correcta:

"I hit an error...

¿Listo para practicar tu inglés en el trabajo?

Lingua-e tiene ejercicios interactivos basados en conversaciones reales de developers: standups, code reviews, retrospectivas y más. Practica hasta que salga solo.

Prueba Lingua-e gratis