Comment changer de répertoire de travail en Python

Rayven Esplanada 18 juillet 2021
Comment changer de répertoire de travail en Python

Cet article explique comment changer le répertoire de travail actuel en Python pour un autre emplacement.

Utiliser le module os pour changer de répertoire en Python

Supposons que, pour une raison quelconque, vous vouliez changer votre répertoire de travail via Python au lieu de la console de commande. Dans ce cas, le module os fournit des outils pour divers utilitaires du système d’exploitation directement par Python.

import os

Supposons que vous êtes actuellement dans un répertoire de travail dans /Users/user et que vous voulez passer à Users/user2 : tout d’abord, vérifiez le répertoire de travail dans lequel vous vous trouvez en imprimant le résultat de os.getcwd(). Ensuite, appelez le bloc os.chdir("Users/user2") pour changer le répertoire de travail actuel.

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

Production :

/Users/user
/Users/user2

Il vérifie que votre programme a réussi à faire basculer les répertoires de travail de user à user2.

Vérification des exceptions

Le chemin est saisi par l’utilisateur, donc des erreurs de saisie sont très probables. Par exemple, l’utilisateur saisit un chemin inexistant ; cette fonction sera probablement très sujette aux exceptions de FileNotFound. C’est pourquoi nous devrions mettre en place un contrôle des exceptions.

Utilisation de if-else pour vérifier les erreurs

La façon la plus simple de le faire est de vérifier si le chemin spécifié existe en utilisant 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")

Supposons que /Users/user2 est un chemin de fichier existant, et que /Users/nonexistentpath n’existe pas.

Production :

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

Le premier appel au bloc changeDir() est passé par l’instruction if parce que le chemin existe. D’autre part, le second appel passe par l’instruction else et imprime un message d’erreur parce que le chemin n’existe pas.

Utilisation de try...except pour vérifier les erreurs

Si la commande os.chdir() ne trouve pas le chemin du fichier, elle lancera une notification FileNotFoundError. Pour détecter cette erreur, nous devons enrouler le code autour d’un bloc 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")

Production :

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

Plus ou moins, les deux produisent le même résultat ; cependant, utiliser la gestion des exceptions try...except est beaucoup plus sûr que d’utiliser une instruction if-else. C’est parce que les conditions définies par l’utilisateur peuvent ne pas couvrir toutes les exceptions possibles qui pourraient se produire en s’attaquant à la manipulation du chemin de fichier.

En résumé, le module os fournit un support étendu pour la manipulation de fichiers et de répertoires, parmi les autres utilitaires qu’il propose.

Nous pouvons directement changer le répertoire de travail en utilisant le bloc os.chdir(), mais il serait plus sûr de l’enrouler autour des blocs if-else ou try...except pour éviter que des exceptions ne se produisent.

Si vous voulez en savoir plus sur la manipulation des fichiers, la gestion des exceptions et la mise à jour des noms de fichiers ou de leur contenu sont incroyablement 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

Article connexe - Python Directory