David542
¿Cómo verifico si existe un directorio en Python?
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 decirfilter(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
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
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
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")
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 levantaOSError
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