Python se une al directorio actual y al directorio padre con os.path.join
(2)
Quiero unirme a la ruta del directorio actual y una ruta de directorio relativa goal_dir
algún lugar del árbol de directorios, por lo que obtengo la ruta absoluta a goal_dir
. Este es mi intento:
import os
goal_dir = os.path.join(os.getcwd(), "../../my_dir")
Ahora, si el directorio actual es C:/here/I/am/
, se une a ellos como C:/here/I/am/../../my_dir
, pero lo que quiero es C:/here/my_dir
. Parece que os.path.join
no es tan inteligente.
¿Cómo puedo hacer esto?
Considere usar os.path.abspath
esto evaluará la ruta absoluta
o Uno puede usar os.path.normpath
esto devolverá la ruta normalizada (Normalizar la ruta, eliminar las barras diagonales, etc.)
Uno debe elegir una de estas funciones dependiendo de los requisitos
En caso de abspath
En tu ejemplo, no puedes usar os.path.join
os.path.abspath("../../my_dir")
Se debe usar os.path.normpath
si está interesado en la ruta relativa.
>>> os.path.normpath("../my_dir/../my_dir")
''../my_dir''
Puedes usar normpath , realpath o abspath :
import os
goal_dir = os.path.join(os.getcwd(), "../../my_dir")
print goal_dir # prints C:/here/I/am/../../my_dir
print os.path.normpath(goal_dir) # prints C:/here/my_dir
print os.path.realpath(goal_dir) # prints C:/here/my_dir
print os.path.abspath(goal_dir) # prints C:/here/my_dir