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
Código que causa el error
import os
os.listdir("myfile.txt") # it's a file, not a directoryError 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