¿Cómo verifico si existe un directorio en Python?

4 minutos de lectura

Avatar de usuario de David542
David542

¿Cómo verifico si existe un directorio en Python?

  • Una palabra de advertencia: la respuesta mejor calificada podría ser susceptible a las condiciones de carrera. Es posible que desee realizar os.stat en cambio, para ver si el directorio existe y es un directorio al mismo tiempo.

    – d33tah

    11 de febrero de 2014 a las 17:09

  • @ d33tah Puede que tengas un buen punto, pero no veo la forma de usarlo. os.stat para decir directorio de un archivo. Se levanta OSError cuando la ruta no es válida, sin importar si es un archivo o un directorio. Además, cualquier código después de la verificación también es susceptible a las condiciones de carrera.

    – Tomáš Zato

    7 sep 2015 a las 14:58

avatar de usuario de phihag
phihag

Usar os.path.isdir solo para directorios:

>>> import os
>>> os.path.isdir('new_folder')
True

Usar os.path.exists tanto para archivos como para directorios:

>>> import os
>>> os.path.exists(os.path.join(os.getcwd(), 'new_folder', 'file.txt'))
False

Como alternativa, puede utilizar pathlib:

 >>> from pathlib import Path
 >>> Path('new_folder').is_dir()
 True
 >>> (Path.cwd() / 'new_folder"https://stackoverflow.com/"file.txt').exists()
 False

  • @syedrakib Si bien los paréntesis se pueden usar para indicar que un objeto se puede llamar, eso no es útil en Python, ya que incluso las clases se pueden llamar. Además, las funciones son valores de primera clase en Python, y puede usarlas sin la notación de paréntesis, como en existing = filter(os.path.isdir(['/lib', '/usr/lib', '/usr/local/lib'])

    – phihag

    30 de marzo de 2013 a las 7:38


  • Puede pasar funciones a otras funciones, como map, pero en el caso general, las funciones se llaman con argumentos y paréntesis. Además, hay algún error tipográfico en su ejemplo. presumiblemente quieres decir filter(os.path.isdir, ['/lib', '/usr/lib', '/usr/local/lib']).

    – Hugh Brown

    31 de marzo de 2013 a las 23:02

  • También, hay os.path.isfile(path) si solo te importa si es un archivo.

    – Nicolás

    16/02/2018 a las 18:00

  • Tenga en cuenta que en algunas plataformas devolverán false si el archivo/directorio existe, pero también se produce un error de permiso de lectura.

    – colineador

    5 de diciembre de 2018 a las 0:39


  • Los ejemplos anteriores no son portátiles y serían mejores si se reescribieran usando os.path.join, o las cosas de pathlib recomendadas a continuación. Algo como esto: print(os.path.isdir(os.path.join(‘home’, ‘el’)))

    – usuario2773661

    12 de noviembre de 2020 a las 18:44


avatar de usuario de joelostblom
joseblom

Python 3.4 introducido el pathlib módulo en la biblioteca estándar, que proporciona un enfoque orientado a objetos para manejar las rutas del sistema de archivos. El is_dir() y exists() métodos de un Path El objeto se puede utilizar para responder a la pregunta:

In [1]: from pathlib import Path

In [2]: p = Path('/usr')

In [3]: p.exists()
Out[3]: True

In [4]: p.is_dir()
Out[4]: True

Las rutas (y las cadenas) se pueden unir con el / operador:

In [5]: q = p / 'bin"https://stackoverflow.com/"vim'

In [6]: q
Out[6]: PosixPath('/usr/bin/vim') 

In [7]: q.exists()
Out[7]: True

In [8]: q.is_dir()
Out[8]: False

Pathlib también está disponible en Python 2.7 a través de el módulo pathlib2 en PyPi.

¡Tan cerca! os.path.isdir devoluciones True si pasa el nombre de un directorio que existe actualmente. Si no existe o no es un directorio, entonces regresa False.

  • y si quieres crearlo os.path.isdir(path) or os.makedirs(path)

    – minutos

    3 de enero de 2022 a las 12:48

  • O usando pathlib: Path(path).mkdir(parents=True, exist_ok=True) crea una ruta anidada en una sola operación.

    -Kirk Strauser

    3 de enero de 2022 a las 21:20

si, uso os.path.exists().

Podemos verificar con 2 funciones integradas

os.path.isdir("directory")

Dará booleano verdadero el directorio especificado está disponible.

os.path.exists("directoryorfile")

Dará boolead verdadero si el directorio o archivo especificado está disponible.

Para verificar si la ruta es un directorio;

os.path.isdir("directorypath")

dará verdadero booleano si la ruta es directorio

  • Esto es completamente redundante con la respuesta superior anterior.

    – Davis arenque

    14 de octubre de 2019 a las 1:46

Avatar de usuario de RanRag
RanRag

sí uso os.ruta.isdir(ruta)

  • Esto es completamente redundante con la respuesta superior anterior.

    – Davis arenque

    14 de octubre de 2019 a las 1:46

avatar de usuario de sksoumik
sksoumik

El siguiente código verifica que el directorio al que se hace referencia en su código exista o no, si no existe en su lugar de trabajo, entonces, crea uno:

import os

if not os.path.isdir("directory_name"):
    os.mkdir("directory_name")

¿Ha sido útil esta solución?