Effectuer un listage de répertoire

Vous voulez obtenir une liste des fichiers contenus dans un répertoire du système de fichiers.

Utilisez la fonction os.listdir() pour obtenir une liste de fichiers dans un répertoire:

import os
noms = os.listdir('rep')

 

Cela vous donnera la liste des répertoires bruts, y compris tous les fichiers, sous-répertoires, liens symboliques, et ainsi de suite.

Si vous avez besoin de filtrer les données d’une manière ou d’une autre, pensez à utiliser une compréhension de liste combinée avec diverses fonctions de la bibliothèque os.path. Par exemple:

import os.path
# Obtenir tous les fichiers réguliers
noms = [nom for nom in os.listdir('rep')
   if os.path.isfile(os.path.join('rep', nom))]

# Obtenir tous les répertoires
repnoms = [nom for nom in os.listdir('rep')
   if os.path.isdir(os.path.join('rep', nom))]

 

Les méthodes startswith() et endswith() des chaînes de caractères peuvent également être utiles pour filtrer le contenu d’un répertoire. Par exemple:

pyfichiers = [nom for nom in os.listdir('rep') if nom.endswith('.py')]

 

Pour l’appariement des noms de fichiers, vous pouvez utiliser les modules glob ou fnmatch à la place. Par exemple:

import glob

fichierspy = glob.glob('rep/*.py')



from fnmatch import fnmatch

pyfiles = [nom for nom in os.listdir('rep') if fnmatch(nom, '*.py')]

 

Obtenir le listage d’un répertoire est facile, mais il vous donne seulement les noms des entrées dans l’annuaire.

Si vous voulez obtenir des métadonnées supplémentaires, telles que la taille des fichiers, les dates de modification, etc., vous devez soit utiliser des fonctions supplémentaires de le module os.path, soit utiliser la fonction os.stat() pour recueillir les données. Par exemple:

# Exemple d'obtention du listage d'un répertoire
import os
import os.path
import glob
fichierspy = glob.glob('*.py')


# Obtenir la taille des fichiers et les dates de modification
nom_taille_date = [(nom, os.path.getsize(nom), os.path.getmtime(nom)) for nom in pyfiles]

for nom, taille, date in nom_taille_date:
   print(nom, taille, date)


# Alternative : Obtenir les métadonnées des fichiers
metadonnees = [(nom, os.stat(nom)) for nom in fichierspy]

for nom, meta in metadonnees:
   print(nom, meta.st_size, meta.st_mtime)

 

Enfin, sachez qu’il y a des problèmes subtils liés à l’encodage qui peuvent survenir lors de la gestion des noms de fichiers.

Normalement, les entrées renvoyées par une fonction telle que os.listdir() sont décodées selon l’encodage de nom de fichier par défaut du système d’exploitation.

Cependant, il est possible dans certaines circonstances de rencontrer des noms de fichiers non décodables.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here