Posteriormente a indagar en varios repositorios y sitios webs de internet al final hemos dado con la resolución que te mostraremos más adelante.
Solución:
Esa es una forma inteligente de referirse a las rutas independientemente de la ubicación del script. los críptico la línea a la que te refieres es:
os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
Hay 3 métodos y 2 constantes presentes:
abspath
devuelve la ruta absoluta de una rutajoin
unirse a las cadenas de rutadirname
devuelve el directorio de un archivo__file__
se refiere ascript
nombre de archivopardir
devuelve la representación de un directorio principal en el sistema operativo (generalmente..
)
Por lo tanto, la expresión devuelve el nombre completo de la ruta del script en ejecución en un multiplataforma seguro camino. No hay necesidad de cableado cualquier dirección, por eso es tan útil.
Puede haber otros enfoques para obtener un directorio principal de dónde se encuentra un archivo, por ejemplo, los programas tienen el concepto de directorio de trabajo actual, os.getcwd()
. Así que haciendo os.getcwd()+'/..'
Podría funcionar. Pero esto es muy peligroso, porque los directorios de trabajo se pueden cambiar.
Además, si el archivo está destinado a ser importado, el directorio de trabajo apuntará al archivo de importación, no al importado, pero __file__
siempre apunta al archivo del módulo real para que sea más seguro.
¡Espero que esto ayude!
Editar: PS – Python 3 simplifica enormemente esta situación al permitirnos tratar las rutas de una manera orientada a objetos, por lo que la línea anterior se convierte en:
from pathlib import Path
Path(__file__).resolve().parent.parent
__file__
representa el archivo desde el que se está ejecutando el código
os.path.dirname(__file__)
le da el directorio en el que se encuentra el archivo
os.path.pardir
significa “..” lo que significa un directorio por encima del actual
os.path.join(os.path.dirname(__file__), os.path.pardir)
se une al nombre del directorio y “..”
os.path.abspath(os.path.join(os.path.dirname(__file__), os.path.pardir))
resuelve la ruta anterior y le brinda una ruta absoluta para el directorio principal del directorio en el que se encuentra su archivo
valoraciones y comentarios
Si te animas, tienes la opción de dejar un ensayo acerca de qué le añadirías a este escrito.