- À propos du répertoire courant en Python
- Connaître le répertoire courant avec os.getcwd()
- Changer le répertoire courant avec os.chdir()
- Utiliser des chemins absolus et relatifs avec os.chdir()
- Remonter vers le dossier parent
- Vérifier un dossier avant de changer de répertoire
- Gérer les erreurs avec os.chdir()
- Utiliser os.getcwd() et os.chdir() avec les fichiers
- Revenir automatiquement au répertoire initial
- Bonnes pratiques avec os.getcwd() et os.chdir()
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.
1 2 | import os print("Module os importé avec succès.") |
Sortie :
1 | Module os importé avec succès. |
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.
1 2 3 | import os repertoire = os.getcwd() print(repertoire) |
Sortie possible sous Windows :
1 | C:\Users\dell\Desktop\projet |
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.
1 2 3 | import os dossier = os.getcwd() print("Répertoire courant :", dossier) |
Sortie possible :
1 | Répertoire courant : C:\Users\dell\Desktop\projet |
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.
1 2 3 4 | import os print("Avant :", os.getcwd()) os.chdir(r"C:\Users\dell\Documents") print("Après :", os.getcwd()) |
Sortie possible :
1 2 | Avant : C:\Users\dell\Desktop\projet Après : C:\Users\dell\Documents |
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.
1 2 3 4 | import os os.chdir(r"C:\Users\dell\Documents") print("Répertoire :", os.getcwd()) print("Contenu :", os.listdir()) |
Sortie possible :
1 2 | Répertoire : C:\Users\dell\Documents Contenu : ['cours', 'Python', 'rapport.docx', 'notes.txt'] |
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.
1 2 3 | import os os.chdir(r"C:\Users\dell\Desktop") print(os.getcwd()) |
Sortie :
1 | C:\Users\dell\Desktop |
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.
1 2 3 | import os os.chdir("python") print(os.getcwd()) |
Sortie possible :
1 | C:\Users\dell\Desktop\python |
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.
1 2 3 4 | import os print("Avant :", os.getcwd()) os.chdir("..") print("Après :", os.getcwd()) |
Sortie possible :
1 2 | Avant : C:\Users\dell\Desktop\python Après : C:\Users\dell\Desktop |
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.
1 2 3 4 | import os print("Avant :", os.getcwd()) os.chdir("../..") print("Après :", os.getcwd()) |
Sortie possible :
1 2 | Avant : C:\Users\dell\Desktop\python Après : C:\Users\dell |
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.
1 2 3 4 5 6 7 | import os dossier = r"C:\Users\dell\Documents" if os.path.exists(dossier): os.chdir(dossier) print("Nouveau répertoire :", os.getcwd()) else: print("Le chemin n'existe pas.") |
Sortie possible :
1 | Nouveau répertoire : C:\Users\dell\Documents |
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.
1 2 3 4 5 6 7 | import os dossier = r"C:\Users\dell\Documents" if os.path.isdir(dossier): os.chdir(dossier) print("Répertoire courant :", os.getcwd()) else: print("Ce dossier n'existe pas.") |
Sortie possible :
1 | Répertoire courant : C:\Users\dell\Documents |
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.
1 2 | import os os.chdir("dossier_inexistant") |
Sortie possible :
1 | FileNotFoundError: [Errno 2] No such file or directory: 'dossier_inexistant' |
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.
1 2 3 4 5 6 7 | import os dossier = "dossier_inexistant" try: os.chdir(dossier) print("Répertoire courant :", os.getcwd()) except FileNotFoundError: print("Le dossier demandé n'existe pas.") |
Sortie :
1 | Le dossier demandé n'existe pas. |
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.
1 2 3 4 5 6 7 8 9 | import os dossier = "dossier_protege" try: os.chdir(dossier) print("Répertoire courant :", os.getcwd()) except FileNotFoundError: print("Le dossier n'existe pas.") except PermissionError: print("Vous n'avez pas la permission d'accéder à ce dossier.") |
Sortie possible :
1 | Vous n'avez pas la permission d'accéder à ce dossier. |
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.
1 2 3 4 5 | import os os.chdir(r"C:\Users\dell\Documents") with open("notes.txt", "r", encoding="utf-8") as fichier: contenu = fichier.read() print(contenu) |
Sortie possible :
1 | Bienvenue dans mon fichier Python. |
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().
1 2 3 4 5 | import os os.chdir(r"C:\Users\dell\Documents") with open("message.txt", "w", encoding="utf-8") as fichier: fichier.write("Bonjour Python") print("Fichier créé dans :", os.getcwd()) |
Sortie possible :
1 | Fichier créé dans : C:\Users\dell\Documents |
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.
1 2 3 4 5 6 7 | import os repertoire_initial = os.getcwd() print("Répertoire initial :", repertoire_initial) os.chdir(r"C:\Users\dell\Documents") print("Pendant le traitement :", os.getcwd()) os.chdir(repertoire_initial) print("Après le traitement :", os.getcwd()) |
Sortie possible :
1 2 3 | Répertoire initial : C:\Users\dell\Desktop\projet Pendant le traitement : C:\Users\dell\Documents Après le traitement : C:\Users\dell\Desktop\projet |
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.
1 2 3 4 5 6 7 8 | import os repertoire_initial = os.getcwd() try: os.chdir(r"C:\Users\dell\Documents") print("Répertoire temporaire :", os.getcwd()) finally: os.chdir(repertoire_initial) print("Retour dans :", os.getcwd()) |
Sortie possible :
1 2 | Répertoire temporaire : C:\Users\dell\Documents Retour dans : C:\Users\dell\Desktop\projet |
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import os repertoire_initial = os.getcwd() destination = r"C:\Users\dell\Documents" if os.path.isdir(destination): try: os.chdir(destination) print("Répertoire actuel :", os.getcwd()) print("Contenu :", os.listdir()) finally: os.chdir(repertoire_initial) print("Retour dans :", os.getcwd()) else: print("Le dossier de destination n'existe pas.") |
Sortie possible :
1 2 3 | Répertoire actuel : C:\Users\dell\Documents Contenu : ['cours', 'Python', 'rapport.docx', 'notes.txt'] Retour dans : C:\Users\dell\Desktop\projet |
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/


