with tutorial the framework espaƱol applications python sys sys.path

python - tutorial - the django project



Obtener padre del directorio actual de la secuencia de comandos de Python (5)

Usando os.path

Para obtener el directorio principal del directorio que contiene la secuencia de comandos (independientemente del directorio de trabajo actual), deberá utilizar __file__ .

Dentro del script, use os.path.abspath(__file__) para obtener la ruta absoluta del script, y llame a os.path.dirname dos veces:

from os.path import dirname, abspath d = dirname(dirname(abspath(__file__))) # /home/kristina/desire-directory

Básicamente, puede subir el árbol del directorio llamando a os.path.dirname tantas veces como sea necesario. Ejemplo:

In [4]: from os.path import dirname In [5]: dirname(''/home/kristina/desire-directory/scripts/script.py'') Out[5]: ''/home/kristina/desire-directory/scripts'' In [6]: dirname(dirname(''/home/kristina/desire-directory/scripts/script.py'')) Out[6]: ''/home/kristina/desire-directory''

Si desea obtener el directorio principal del directorio de trabajo actual , use os.getcwd :

import os d = os.path.dirname(os.getcwd())

Usando pathlib

También puede usar el módulo pathlib (disponible en Python 3.4 o más reciente).

Cada instancia de pathlib.Path tiene el atributo parent refiere al directorio principal, así como el atributo principal, que es una lista de ancestros de la ruta. Path.resolve se puede utilizar para obtener la ruta absoluta. También resuelve todos los enlaces simbólicos, pero puede usar Path.absolute en su lugar si no es un comportamiento deseado.

Path(__file__) y la Path() representan la ruta del script y el directorio de trabajo actual respectivamente, por lo tanto, para obtener el directorio principal del directorio del script (independientemente del directorio de trabajo actual) que usaría

from pathlib import Path # `path.parents[1]` is the same as `path.parent.parent` d = Path(__file__).resolve().parents[1] # Path(''/home/kristina/desire-directory'')

y para obtener el directorio padre del directorio de trabajo actual

from pathlib import Path d = Path().resolve().parent

Tenga en cuenta que d es una instancia de Path , que no siempre es útil. Puedes convertirlo a str fácilmente cuando lo necesites:

In [15]: str(d) Out[15]: ''/home/kristina/desire-directory''

Quiero obtener el padre del directorio actual de la secuencia de comandos de Python. Por ejemplo, lanzo el script desde /home/kristina/desire-directory/scripts la ruta del deseo en este caso es /home/kristina/desire-directory

sys.path[0] de sys . Pero no quiero analizar la cadena resultante sys.path[0] . ¿Hay alguna otra manera de obtener el padre del directorio actual en Python?


Esto me funcionó (estoy en Ubuntu):

import os os.path.dirname(os.getcwd())


Puedes usar Path.parent desde el módulo pathlib :

from pathlib import Path # ... Path(__file__).parent

Puede utilizar varias llamadas para el parent para ir más lejos en la ruta:

Path(__file__).parent.parent


from os.path import dirname from os.path import abspath def get_file_parent_dir_path(): """return the path of the parent directory of current file''s directory """ current_dir_path = dirname(abspath(__file__)) path_sep = os.path.sep components = current_dir_path.split(path_sep) return path_sep.join(components[:-1])


import os current_file = os.path.abspath(os.path.dirname(__file__)) parent_of_parent_dir = os.path.join(current_file, ''../../'')