- À propos de os.listdir() en Python
- Lister le contenu du dossier courant
- Lister le contenu d'un dossier spécifique
- Parcourir les éléments retournés par os.listdir()
- Distinguer les fichiers des dossiers
- Afficher uniquement les fichiers
- Afficher uniquement les dossiers
- Filtrer les fichiers selon leur extension
- Trier les éléments retournés par os.listdir()
- Gérer les erreurs avec os.listdir()
Le module os de Python fournit plusieurs outils permettant de manipuler les fichiers, les dossiers et les chemins du système. Parmi ces outils, la fonction os.listdir() permet de récupérer facilement le contenu d'un répertoire. Dans ce tutoriel, nous allons apprendre à utiliser cette fonction pour afficher, parcourir, filtrer et trier les fichiers et les dossiers.
1. À propos de os.listdir() en Python
La fonction os.listdir() appartient au module os. Elle retourne une liste Python contenant les noms des fichiers et des dossiers présents dans le répertoire indiqué.
Avant d'utiliser os.listdir(), nous devons importer le module os. L'exemple suivant vérifie simplement que le module est correctement importé.
1 2 | import os print("Module os importé.") |
Sortie :
1 | Module os importé. |
La syntaxe générale de la fonction est la suivante :
1 | os.listdir(chemin) |
Sortie :
1 | Une liste contenant les noms des fichiers et dossiers du chemin indiqué. |
Le paramètre chemin est facultatif. Lorsqu'il n'est pas indiqué, os.listdir() travaille sur le répertoire courant.
2. Lister le contenu du dossier courant
Appelée sans argument, la fonction os.listdir() retourne les éléments présents dans le répertoire de travail courant. Supposons que notre dossier contienne les fichiers cours.py, test.py et le dossier images.
1 2 3 | import os contenu = os.listdir() print(contenu) |
Sortie possible :
1 | ['cours.py', 'test.py', 'images'] |
Le résultat est une véritable liste Python. Chaque élément de cette liste est une chaîne de caractères correspondant au nom d'un fichier ou d'un dossier.
Utiliser le chemin "."
Le symbole . désigne le dossier courant. Nous pouvons donc obtenir le même résultat en passant explicitement "." à la fonction os.listdir().
1 2 3 | import os contenu = os.listdir(".") print(contenu) |
Sortie possible :
1 | ['cours.py', 'test.py', 'images'] |
3. Lister le contenu d'un dossier spécifique
Pour consulter le contenu d'un dossier particulier, il suffit de transmettre son chemin à os.listdir(). Supposons qu'un dossier nommé documents contienne trois fichiers.
1 2 3 | import os contenu = os.listdir("documents") print(contenu) |
Sortie possible :
1 | ['cours.pdf', 'exercice.pdf', 'notes.txt'] |
Le chemin peut être un chemin relatif comme dans l'exemple précédent ou un chemin absolu.
Utiliser un chemin absolu sous Windows
Dans l'exemple suivant, nous utilisons une chaîne brute précédée de r pour indiquer un chemin Windows complet. Cette notation facilite l'utilisation des antislashs \.
1 2 3 | import os contenu = os.listdir(r"C:\Users\dell\Documents") print(contenu) |
Sortie possible :
1 | ['cours', 'Python', 'rapport.docx', 'notes.txt'] |
4. Parcourir les éléments retournés par os.listdir()
Puisque os.listdir() retourne une liste, nous pouvons utiliser une boucle for pour parcourir les éléments un par un. Cette méthode produit généralement un affichage plus lisible.
1 2 3 4 | import os contenu = os.listdir() for element in contenu: print(element) |
Sortie possible :
1 2 3 4 | cours.py test.py images documents |
Nous pouvons également parcourir directement le résultat de os.listdir() sans le stocker préalablement dans une variable.
1 2 3 | import os for element in os.listdir(): print(element) |
Sortie possible :
1 2 3 4 | cours.py test.py images documents |
5. Distinguer les fichiers des dossiers
La fonction os.listdir() retourne les noms des fichiers et des dossiers sans préciser leur nature. Pour les distinguer, nous pouvons utiliser os.path.isfile() et os.path.isdir().
Dans l'exemple suivant, nous testons chaque élément retourné par os.listdir() afin de déterminer s'il correspond à un fichier ou à un dossier.
1 2 3 4 5 6 | import os for element in os.listdir(): if os.path.isfile(element): print(element, ": fichier") elif os.path.isdir(element): print(element, ": dossier") |
Sortie possible :
1 2 3 4 | cours.py : fichier test.py : fichier images : dossier documents : dossier |
Distinguer les éléments d'un autre dossier
Lorsque nous examinons le contenu d'un autre répertoire, il faut construire le chemin complet de chaque élément. La fonction os.path.join() permet de réaliser cette opération proprement.
1 2 3 4 5 6 7 8 | import os dossier = "documents" for element in os.listdir(dossier): chemin = os.path.join(dossier, element) if os.path.isfile(chemin): print(element, ": fichier") elif os.path.isdir(chemin): print(element, ": dossier") |
Sortie possible :
1 2 3 | cours.pdf : fichier notes.txt : fichier images : dossier |
6. Afficher uniquement les fichiers
Nous pouvons combiner os.listdir() et os.path.isfile() pour ne conserver que les fichiers. Chaque élément est testé avant d'être affiché.
1 2 3 4 | import os for element in os.listdir(): if os.path.isfile(element): print(element) |
Sortie possible :
1 2 3 | cours.py test.py notes.txt |
Créer une liste contenant uniquement les fichiers
Une compréhension de liste permet d'obtenir directement une nouvelle liste contenant uniquement les fichiers du dossier courant.
1 2 3 | import os fichiers = [element for element in os.listdir() if os.path.isfile(element)] print(fichiers) |
Sortie possible :
1 | ['cours.py', 'test.py', 'notes.txt'] |
7. Afficher uniquement les dossiers
Pour afficher uniquement les dossiers, nous utilisons cette fois la fonction os.path.isdir(). Elle retourne True lorsque le chemin correspond à un répertoire.
1 2 3 4 | import os for element in os.listdir(): if os.path.isdir(element): print(element) |
Sortie possible :
1 2 3 | images documents projets |
Créer une liste contenant uniquement les dossiers
Nous pouvons également utiliser une compréhension de liste afin de stocker tous les dossiers dans une nouvelle liste.
1 2 3 | import os dossiers = [element for element in os.listdir() if os.path.isdir(element)] print(dossiers) |
Sortie possible :
1 | ['images', 'documents', 'projets'] |
8. Filtrer les fichiers selon leur extension
Il est fréquent de vouloir afficher uniquement les fichiers possédant une certaine extension. La méthode endswith() permet par exemple de sélectionner les fichiers Python dont le nom se termine par .py.
1 2 3 4 | import os for element in os.listdir(): if element.endswith(".py"): print(element) |
Sortie possible :
1 2 3 | cours.py test.py programme.py |
Filtrer plusieurs extensions
La méthode endswith() accepte également un tuple d'extensions. Nous pouvons ainsi rechercher plusieurs types de fichiers simultanément. Dans l'exemple suivant, nous sélectionnons les fichiers .jpg, .jpeg et .png.
1 2 3 4 | import os for element in os.listdir(): if element.lower().endswith((".jpg", ".jpeg", ".png")): print(element) |
Sortie possible :
1 2 3 | photo.jpg logo.png image.jpeg |
L'utilisation de lower() permet également de reconnaître des extensions écrites avec des majuscules, par exemple PHOTO.JPG.
Vérifier également qu'il s'agit d'un fichier
Tester uniquement l'extension n'assure pas que l'élément est réellement un fichier. Pour un filtrage plus rigoureux, nous pouvons combiner endswith() avec os.path.isfile().
1 2 3 4 | import os for element in os.listdir(): if os.path.isfile(element) and element.lower().endswith(".pdf"): print(element) |
Sortie possible :
1 2 3 | cours.pdf exercices.pdf rapport.pdf |
9. Trier les éléments retournés par os.listdir()
L'ordre des éléments retournés par os.listdir() ne doit pas être considéré comme un ordre alphabétique garanti. Si nous souhaitons obtenir un affichage ordonné, nous pouvons utiliser la fonction sorted().
1 2 3 | import os contenu = sorted(os.listdir()) print(contenu) |
Sortie possible :
1 | ['cours.py', 'documents', 'images', 'notes.txt', 'test.py'] |
Afficher les éléments triés ligne par ligne
Nous pouvons combiner sorted() avec une boucle for afin d'afficher chaque élément sur une ligne tout en respectant l'ordre alphabétique.
1 2 3 | import os for element in sorted(os.listdir()): print(element) |
Sortie possible :
1 2 3 4 5 | cours.py documents images notes.txt test.py |
10. Gérer les erreurs avec os.listdir()
Si le chemin transmis à os.listdir() n'existe pas, Python déclenche une exception FileNotFoundError. Il est donc important de tenir compte de cette situation dans un programme.
Dans l'exemple suivant, nous tentons de consulter un dossier qui n'existe pas.
1 2 3 | import os contenu = os.listdir("dossier_inexistant") print(contenu) |
Sortie possible :
1 | FileNotFoundError: [Errno 2] No such file or directory: 'dossier_inexistant' |
Utiliser try et except
Nous pouvons intercepter l'exception FileNotFoundError à l'aide des instructions try et except. Le programme peut ainsi afficher un message explicite au lieu de s'interrompre brutalement.
1 2 3 4 5 6 7 8 | import os dossier = "documents" try: contenu = os.listdir(dossier) for element in contenu: print(element) except FileNotFoundError: print("Le dossier n'existe pas.") |
Sortie si le dossier n'existe pas :
1 | Le dossier n'existe pas. |
En résumé, os.listdir() constitue une méthode simple pour récupérer le contenu d'un répertoire. Elle peut être associée à os.path.isfile(), os.path.isdir(), os.path.join(), sorted() et endswith() pour effectuer des traitements plus précis sur les fichiers et les dossiers.
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/


