Lister les fichiers et dossiers avec os.listdir() en Python

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é.

Sortie :

La syntaxe générale de la fonction est la suivante :

Sortie :

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.

Sortie possible :

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().

Sortie possible :

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.

Sortie possible :

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 \.

Sortie possible :

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.

Sortie possible :

Nous pouvons également parcourir directement le résultat de os.listdir() sans le stocker préalablement dans une variable.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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é.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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().

Sortie possible :

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().

Sortie possible :

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.

Sortie possible :

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.

Sortie possible :

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.

Sortie si 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/


Leave a Reply

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