Cuando se trata de archivos en directorios en Python, siempre es una buena idea usar rutas absolutas. Sin embargo, si está trabajando con rutas relativas, deberá comprender el concepto del directorio de trabajo actual y cómo encontrar o cambiar el directorio de trabajo actual. Una ruta absoluta especifica una ubicación de archivo o directorio que comienza en el directorio raíz, mientras que la ruta relativa comienza en el directorio de trabajo actual.

Cuando ejecuta una secuencia de comandos de Python, el directorio de trabajo actual se establece en el directorio desde el que se ejecuta la secuencia de comandos.

El módulo os python proporciona una forma portátil de interactuar con el sistema operativo. El módulo es parte de la biblioteca estándar de Python e incluye métodos para encontrar y cambiar el directorio de trabajo actual.

Obtener el directorio de trabajo actual en Python

El getcwd()método del módulo os en Python devuelve una cadena que contiene la ruta absoluta del directorio de trabajo actual. La cadena devuelta no incluye el carácter de barra inclinada final.

os.getcwd()

Para usar los métodos del módulo os, debe importar el módulo en la parte superior del archivo.

A continuación se muestra un ejemplo que muestra cómo imprimir el directorio de trabajo actual:

# Import the os module
import os

# Get the current working directory
cwd = os.getcwd()

# Print the current working directory
print("Current working directory: {0}".format(cwd))

# Print the type of the returned object
print("os.getcwd() returns an object of type: {0}".format(type(cwd)))

La salida se verá algo como esto:

Current working directory: /home/linuxize/Desktop
os.getcwd() returns an object of type: <class 'str'>
Si desea encontrar el directorio donde se encuentra el script, use os.path.realpath(__file__)Devolverá una cadena que contiene la ruta absoluta al script en ejecución.

Cambiar el directorio de trabajo actual en Python

Para cambiar el directorio de trabajo actual en Python, use el chdir()método.

os.getcwd(path)

El método acepta un argumento, la ruta al directorio al que desea cambiar. El pathargumento puede ser absoluto o relativo.

Aquí hay un ejemplo:

# Import the os module
import os

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

# Change the current working directory
os.chdir('/tmp')

# Print the current working directory
print("Current working directory: {0}".format(os.getcwd()))

La salida se verá algo como esto:

Current working directory: /home/linuxize/Desktop
Current working directory: /tmp

El argumento proporcionado al chdir()método debe ser un directorio; de lo contrario NotADirectoryError, se genera una excepción. Si el directorio especificado no existe, se genera una FileNotFoundErrorexcepción. Si el usuario bajo el cual se ejecuta el script no tiene los permisos necesarios, PermissionErrorse genera una excepción.

# Import the os module
import os

path = '/var/www'

try:
    os.chdir(path)
    print("Current working directory: {0}".format(os.getcwd()))
except FileNotFoundError:
    print("Directory: {0} does not exist".format(path))
except NotADirectoryError:
    print("{0} is not a directory".format(path))
except PermissionError:
    print("You do not have permissions to change to {0}".format(path))

Conclusión

Para encontrar el directorio de trabajo actual en Python, use os.getcwd()y para cambiar el directorio de trabajo actual, use os.chdir(path).

Si tiene alguna pregunta o comentario, no dude en dejar un comentario.