Lingua-e
Python

¿Qué significa NotADirectoryError?

← Errores

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.

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ómo solucionarlo

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.

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")

Errores relacionados

¿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