pros y contras entre os.path.exists vs os.path.isdir


78

Estoy verificando si existe un directorio, pero noté que estoy usando en os.path.existslugar de os.path.isdir. Ambos funcionan bien, pero tengo curiosidad por saber cuáles son las ventajas de usar en isdirlugar de exists.

Respuestas:


131

os.path.existstambién regresará Truesi hay un archivo normal con ese nombre.

os.path.isdirsolo regresará Truesi esa ruta existe y es un directorio, o un enlace simbólico a un directorio.


1
os.path.isdirestá volviendo verdadero para mí en un enlace simbólico.
Kaz

Estoy os.path.isdir('.ipynb_checkpoints')regresando de verdad
Little Bobby Tables

En Python 2.7, os.path.isdir devuelve verdadero para enlaces simbólicos a directorios y falso para enlaces simbólicos a archivos (como se esperaba). Sin embargo, esto puede causar problemas con os.rmdir porque fallará en un enlace simbólico incluso si es un enlace simbólico a un directorio.
Halsafar

6

Al igual que suena así: si la ruta existe, pero es un archivo y no un directorio, isdirregresará False. Mientras tanto, existsvolverá Trueen ambos casos.


2

os.path.isdir () comprueba si la ruta existe y es un directorio y devuelve TRUE para el caso.

De manera similar, os.path.isfile () comprueba si la ruta existe y es un archivo y devuelve TRUE para el caso.

Y os.path.exists () comprueba si la ruta existe y no le importa si la ruta apunta a un archivo o directorio y devuelve TRUE en cualquiera de los casos.


0

La mayoría de las veces es lo mismo.

Pero, la ruta puede existir físicamente mientras que path.exists()devuelve False. Este es el caso si os.stat () devuelve False para este archivo.

Si la ruta existe físicamente, path.isdir()siempre devolverá True. Esto no depende de la plataforma.


No está claro qué significa ese último párrafo. Si un directorio existe físicamente en un servidor remoto, pero no tengo conexión de red donde estoy ejecutando el script, seguramente isdir()no puedo saber si el directorio existe.
LarsH

Si está comprobando si existe un directorio en una ruta UNC, os.path.exists puede devolver falso cuando realmente existe (incluso con la conexión funcionando), pero os.path.isdir devolverá el valor correcto. Para un archivo en el caso de ruta UNC simlar, también debe usar os.path.isfile en lugar de os.path.exists por la misma razón.
miigotu

0

os.path.exists (ruta) Devuelve Verdadero si la ruta se refiere a una ruta existente. Una ruta existente puede ser archivos normales ( http://en.wikipedia.org/wiki/Unix_file_types#Regular_file ), pero también archivos especiales (por ejemplo, un directorio). Entonces, en esencia, esta función devuelve verdadero si la ruta proporcionada existe en el sistema de archivos en cualquier forma (a pesar de algunas excepciones, como enlaces simbólicos rotos).

os.path.isdir (ruta) a su vez solo devolverá verdadero cuando la ruta apunte a un directorio


1
Esto realmente no responde a la pregunta del OP, que pregunta por las diferencias entre los dos comandos. Solo has detallado uno.
esqew
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.