Connaître et changer le répertoire courant avec os.getcwd() et os.chdir() en Python

Lorsqu'un programme Python manipule des fichiers et des dossiers, il est important de connaître son répertoire de travail courant. Le module os fournit principalement deux fonctions pour gérer ce répertoire : os.getcwd() permet de connaître le répertoire courant tandis que os.chdir() permet de le modifier.

1. À propos du répertoire courant en Python

Le répertoire courant, également appelé répertoire de travail, correspond au dossier utilisé comme point de départ pour interpréter les chemins relatifs. Il ne correspond pas nécessairement au dossier contenant le script Python exécuté.

Pour utiliser les fonctions os.getcwd() et os.chdir(), nous devons commencer par importer le module os.

Sortie :

Les deux fonctions principales étudiées dans ce tutoriel sont :

  • os.getcwd() : retourne le chemin du répertoire de travail courant ;
  • os.chdir() : permet de changer le répertoire de travail courant.

2. Connaître le répertoire courant avec os.getcwd()

La fonction os.getcwd() ne reçoit aucun argument. Elle retourne sous forme de chaîne de caractères le chemin absolu du répertoire dans lequel Python travaille actuellement.

Sortie possible sous Windows :

Le résultat dépend naturellement de l'endroit depuis lequel le programme Python a été lancé.

Afficher un message avec le répertoire courant

Nous pouvons stocker le résultat de os.getcwd() dans une variable puis l'utiliser dans le programme. L'exemple suivant affiche explicitement le chemin du dossier de travail.

Sortie possible :

La valeur retournée par os.getcwd() est un chemin absolu.

3. Changer le répertoire courant avec os.chdir()

La fonction os.chdir() permet de changer le répertoire de travail courant. Elle reçoit comme argument le chemin du nouveau dossier.

Dans l'exemple suivant, nous affichons d'abord le répertoire courant, puis nous utilisons os.chdir() pour nous déplacer vers le dossier Documents.

Sortie possible :

Après l'exécution de os.chdir(), tous les chemins relatifs utilisés par le programme seront interprétés à partir du nouveau répertoire courant.

Changer de dossier puis afficher son contenu

Une fois le répertoire courant modifié, nous pouvons par exemple utiliser os.listdir() pour afficher les éléments présents dans ce nouveau dossier.

Sortie possible :

4. Utiliser des chemins absolus et relatifs avec os.chdir()

La fonction os.chdir() accepte aussi bien un chemin absolu qu'un chemin relatif. Un chemin absolu indique l'emplacement complet du dossier sur le système.

Dans l'exemple suivant, nous utilisons un chemin absolu Windows pour changer directement de répertoire.

Sortie :

Utiliser un chemin relatif

Un chemin relatif est interprété à partir du répertoire courant. Supposons que le dossier courant soit C:\Users\dell\Desktop et qu'il contienne un dossier nommé python. Nous pouvons nous déplacer vers celui-ci en indiquant simplement son nom.

Sortie possible :

Cette écriture est pratique lorsque nous connaissons la structure des dossiers relativement au répertoire de travail actuel.

5. Remonter vers le dossier parent

Dans un chemin, la notation .. représente le dossier parent. Nous pouvons donc utiliser os.chdir("..") pour remonter d'un niveau dans l'arborescence.

Supposons que le répertoire courant soit C:\Users\dell\Desktop\python. Le code suivant permet de revenir dans le dossier Desktop.

Sortie possible :

Remonter de plusieurs niveaux

Il est également possible de remonter plusieurs niveaux. Le chemin ../.. représente par exemple le parent du dossier parent. Cette notation fonctionne avec les séparateurs adaptés par le système.

Sortie possible :

6. Vérifier un dossier avant de changer de répertoire

Avant d'utiliser os.chdir(), il peut être utile de vérifier que le dossier existe réellement. La fonction os.path.exists() permet de vérifier l'existence d'un chemin.

Sortie possible :

Vérifier qu'il s'agit bien d'un dossier

La fonction os.path.isdir() est encore plus précise lorsqu'il s'agit de changer de répertoire. Elle vérifie que le chemin existe et qu'il correspond réellement à un dossier.

Sortie possible :

Pour cette situation, os.path.isdir() est généralement préférable à os.path.exists(), car un chemin existant pourrait correspondre à un fichier et non à un dossier.

7. Gérer les erreurs avec os.chdir()

Si nous transmettons à os.chdir() un chemin qui n'existe pas, Python déclenche généralement une exception FileNotFoundError.

Dans l'exemple suivant, nous essayons volontairement d'accéder à un dossier inexistant.

Sortie possible :

Gérer FileNotFoundError avec try et except

Nous pouvons utiliser les instructions try et except afin d'intercepter cette erreur et d'éviter l'arrêt brutal du programme.

Sortie :

Gérer une erreur de permission

Un dossier peut exister mais être inaccessible à l'utilisateur exécutant le programme. Dans cette situation, os.chdir() peut déclencher une exception PermissionError. Nous pouvons également la traiter.

Sortie possible :

8. Utiliser os.getcwd() et os.chdir() avec les fichiers

Le changement du répertoire courant influence directement la manière dont Python interprète les chemins relatifs. Supposons que le dossier Documents contienne un fichier nommé notes.txt. Après avoir changé de répertoire, nous pouvons ouvrir ce fichier simplement avec son nom.

Sortie possible :

Python recherche ici notes.txt dans le répertoire retourné par os.getcwd().

Créer un fichier dans le répertoire courant

Le même principe s'applique lors de la création d'un fichier. Dans l'exemple suivant, message.txt sera créé dans le répertoire courant défini par os.chdir().

Sortie possible :

9. Revenir automatiquement au répertoire initial

Changer le répertoire courant avec os.chdir() affecte les opérations suivantes du programme. Il peut donc être utile de mémoriser le répertoire initial avec os.getcwd() afin d'y revenir après le traitement.

Sortie possible :

Cette technique permet d'éviter que le programme reste dans un autre répertoire de travail après l'exécution d'une opération particulière.

Utiliser try et finally pour garantir le retour

Pour une solution plus sûre, nous pouvons placer le retour vers le dossier initial dans un bloc finally. Celui-ci est exécuté même lorsqu'une erreur survient pendant le traitement.

Sortie possible :

10. Bonnes pratiques avec os.getcwd() et os.chdir()

Les fonctions os.getcwd() et os.chdir() sont simples à utiliser, mais quelques bonnes pratiques permettent d'éviter les erreurs liées aux chemins et aux changements de répertoire.

  • Utiliser os.getcwd() pour vérifier le répertoire de travail lorsqu'un fichier n'est pas trouvé.
  • Vérifier l'existence d'un dossier avant d'utiliser os.chdir().
  • Préférer os.path.isdir() lorsqu'il faut vérifier qu'un chemin correspond réellement à un dossier.
  • Utiliser try et except lorsqu'un changement de dossier peut échouer.
  • Mémoriser le répertoire initial lorsque le programme doit y revenir après un traitement.
  • Ne pas confondre le répertoire courant avec le dossier dans lequel se trouve nécessairement le script Python.

Le programme suivant résume une utilisation courante des deux fonctions. Nous mémorisons le dossier initial, vérifions le dossier de destination, changeons temporairement de répertoire puis revenons au point de départ.

Sortie possible :

En résumé, os.getcwd() permet de connaître à tout moment le répertoire de travail courant, tandis que os.chdir() permet de le modifier. Ces deux fonctions sont particulièrement utiles lorsqu'un programme doit travailler successivement dans plusieurs dossiers ou manipuler des fichiers à l'aide de chemins relatifs.

 


 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *