Ruta relativa en Python

Muhammad Maisam Abbas 10 octubre 2023
  1. Ruta del archivo en Python
  2. Camino absoluto
  3. Camino relativo
Ruta relativa en Python

En este tutorial, discutiremos la ruta relativa en Python.

Ruta del archivo en Python

Una ruta de archivo especifica la ubicación de un archivo en la computadora. Por ejemplo, C:\PythonProjects\Tutorials\Paths es la ruta de un archivo paths.py en mi máquina con Windows. Aquí, C:\ es el directorio raíz y PythonProjects, Tutorials y Paths son subdirectorios. paths.py es un script de Python dentro del directorio Paths dentro del directorio Tutorials dentro del directorio PythonProjects dentro del directorio raíz C:\. Hay dos tipos de rutas de archivo en Python, es decir, rutas absolutas y relativas.

Diferencia entre Windows, Mac y Linux

En máquinas con Windows, \ se utiliza como separador entre los nombres de directorio, mientras que, tanto en máquinas Linux como Mac, / se utiliza como separador. Por ejemplo,

#file path in Windows
rootdirectory\\subdirectory\\subsubdirectory\\filename.extension
#file path in Mac and Linux
rootdirectory/subdirectory/subsubdirectory/filename.extension

En Windows, hay dos barras invertidas porque cada barra invertida debe escaparse con otra barra invertida. Esto se puede gestionar mediante el método os.path.join(). Este método maneja los separadores según el sistema operativo. Por ejemplo,

import os

pathname = os.path.join("root", "directory1", "directory2")
print(pathname)

Producción :

#On Windows
root\directory1\directory2
#On Mac and Linux
root/directory1/directory2

Este tutorial contendría \ como separador para dar los ejemplos en Windows. Usaremos la siguiente jerarquía de archivos y configuraremos C:\PythonProjects\Tutorials\Paths como el directorio de trabajo actual.

ejemplo de sistema de archivos

Directorio de trabajo actual

El directorio de trabajo actual o cwd en resumen es el directorio desde el que se está ejecutando el programa. Puede obtener el directorio de trabajo actual del archivo en particular mediante el método os.getcwd().

import os

print(os.getcwd())

Producción :

C:\PythonProjects\Tutorials\Paths

El directorio de trabajo actual también se puede cambiar en tiempo de ejecución usando el método os.chdir().

import os

print("Old cwd = " + os.getcwd())
os.chdir("C:\\PythonProjects\\Tutorials")
print("New cwd = " + os.getcwd())

Producción :

Old cwd = C:\PythonProjects\Tutorials\Paths
New cwd = C:\PythonProjects\Tutorials

Camino absoluto

Una ruta absoluta de un archivo es la ruta completa desde el directorio raíz hasta ese archivo en particular. Por ejemplo, C:\PythonProjects\Tutorials\Paths\paths.py es la ruta absoluta del archivo paths.py.

Podemos obtener la ruta absoluta del archivo actual como se muestra a continuación.

import os

absolutepath = os.path.abspath(__file__)
print(absolutepath)

Producción :

C:\PythonProjects\Tutorials\Paths\paths.py

Navegar a una carpeta usando la ruta absoluta en Python es bastante fácil. El único dolor de cabeza es que debe conocer los nombres exactos de todos los directorios del directorio raíz.

import os

print("Old cwd = " + os.getcwd())
os.chdir("C:\\PythonProjects\\Tutorials\\Strings")
print("New cwd = " + os.getcwd())

Camino relativo

La ruta absoluta es útil, pero puede volverse compleja muy pronto. Entonces, para minimizar esta complejidad, se usa una ruta relativa. Ruta relativa significa la ruta de un determinado archivo en relación con el directorio de trabajo actual.

Por ejemplo, si el directorio de trabajo actual es C:\PythonProjects\Tutorials, la ruta relativa del archivo path.py sería \Paths\paths.py, que es más corta y más fácil de usar que la ruta absoluta C:\PythonProjects\Tutorials\Paths\paths.py.

La ruta absoluta de un archivo sigue siendo la misma en todas partes, pero la ruta relativa cambia según el directorio de trabajo actual. Este fenómeno se demuestra en el siguiente ejemplo de codificación.

Si necesitamos acceder a archivos en la carpeta Strings, tenemos que usar la ruta absoluta completa C:\PythonProjects\Tutorials\Strings\string.py o podemos hacer lo que se menciona en el siguiente código.

import os
import sys

absolutepath = os.path.abspath(__file__)
print(absolutepath)

fileDirectory = os.path.dirname(absolutepath)
print(fileDirectory)
# Path of parent directory
parentDirectory = os.path.dirname(fileDirectory)
print(parentDirectory)
# Navigate to Strings directory
newPath = os.path.join(parentDirectory, "Strings")
print(newPath)

Producción :

C:\PythonProjects\Tutorials\Paths\paths.py
C:\PythonProjects\Tutorials\Paths
C:\PythonProjects\Tutorials
C:\PythonProjects\Tutorials\Strings
Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

Artículo relacionado - Python Path