Cómo cambiar el directorio de trabajo en Python

Rayven Esplanada 18 julio 2021
Cómo cambiar el directorio de trabajo en Python

Este artículo discute cómo se puede cambiar el directorio de trabajo actual de Python a otra ubicación.

Usar el módulo os para cambiar de directorio en Python

Supongamos que, por alguna razón, quiere cambiar su directorio de trabajo a través de Python en lugar de la consola de comandos. En ese caso, el módulo os proporciona herramientas para diversas utilidades del sistema operativo directamente a través de Python.

import os

Digamos que está actualmente en un directorio de trabajo en Users/user2 y quiere cambiar a Users/user2: primero, verifique el directorio de trabajo actual en el que se encuentra imprimiendo el resultado de os.getcwd(). Lo siguiente es llamar al bloque os.chdir("/Users/user2") para cambiar el directorio de trabajo actual.

print(os.getcwd())
os.chdir("/Users/user2")
print(os.getcwd())

Resultado:

/Users/user
/Users/user2

Verifica que su programa ha cambiado con éxito los directorios de trabajo de user a user2.

Comprobación de excepciones

La ruta está introducida por el usuario, por lo que es muy probable que haya errores de entrada. Por ejemplo, el usuario introduce una ruta inexistente; esta función probablemente será muy propensa a las excepciones de FileNotFound. Dado eso, deberíamos implementar la comprobación de excepciones.

Uso de if-else para buscar errores

La manera simple de hacerlo es comprobar si el camino especificado existe usando if-else:

import os


def changeDir(newPath):
    if os.path.exists(newPath):
        os.chdir("Directory moved: ", newPath)
        print(os.getcwd())
    else:
        print("Directory ", newPath, " not found.")


print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")

Asumamos que /Users/user2 es una ruta de archivo existente, y que /Users/nonexistentpath no existe.

Resultado:

Base directory:  /Users/user
Directory moved:  /Users/user2
Directory  Users/nonexistentpath  not found.

La primera llamada al bloque changeDir() pasó por la declaración if porque la ruta existe. Por otro lado, la segunda pasa por el else e imprime un mensaje de error porque la ruta no existe.

Usando try...except para comprobar si hay errores

Si el comando os.chdir() no encuentra la ruta del archivo, lanzará una notificación de FileNotFoundError. Para atrapar esto, tenemos que envolver el código alrededor de un bloque de try...except.

import os


def changeDir(newPath):
    try:
        os.chdir(newPath)
        print("Directory moved:  newPath")
    except OSError:
        print("Directory ", newPath, "does not exist.")


print("Base directory: ", os.getcwd())
changeDir("/Users/user2")
changeDir("/Users/nonexistentpath")

Resultado:

Base directory:  /Users/user
Directory moved:  /Users/user2
Directory  Users/nonexistentpath  does not exist.

Más o menos, ambos producen la misma salida; sin embargo, usar el manejo de excepciones try...except es mucho más seguro que usar una declaración if-else. Esto se debe a que las condiciones definidas por el usuario podrían no cubrir todas las posibles excepciones que podrían ocurrir al abordar la manipulación de la ruta de los archivos.

En resumen, el módulo os proporciona un amplio soporte para la manipulación de archivos y directorios, entre otras utilidades que ofrece.

Podemos cambiar directamente el directorio de trabajo usando el bloque os.chdir(), pero sería más seguro envolverlo con los bloques if-else o try...except para evitar que ocurran excepciones.

Si quieres explorar más sobre la manipulación de archivos, el manejo de excepciones y la actualización de los nombres de los archivos o el contenido son increíblemente importantes.

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

Artículo relacionado - Python Directory