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