Comment trouver des fichiers avec une certaine extension seulement en Python

  1. La méthode glob.glob pour trouver les fichiers avec une certaine extension
  2. La méthode os.listdir() pour trouver les fichiers avec une certaine extension
  3. La méthode pathlib.glob pour trouver les fichiers avec une certaine extension
  4. Trouver des fichiers avec une certaine extension dans le répertoire et ses sous-répertoires en Python
  5. Le module pathlib recherche les fichiers récursivement

Cet article présente différentes méthodes pour trouver les fichiers avec une certaine extension uniquement en Python.

La méthode glob.glob pour trouver les fichiers avec une certaine extension

Nous pourrions utiliser le module glob.glob pour trouver les fichiers avec une certaine extension seulement en Python.

import glob

targetPattern = r"C:\Test\*.txt"
glob.glob(targetPattern)

Les codes ci-dessus montrent comment trouver les fichiers avec l’extension txt dans le répertoire C:\Test.

La méthode os.listdir() pour trouver les fichiers avec une certaine extension

La fonction os.listdir() liste tous les fichiers dans le répertoire donné, sans les informations sur le chemin d’accès. Vous pouvez extraire les fichiers avec l’extension spécifique en utilisant la fonction str.endswith().

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [_ for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['test.txt', 'test1.txt']

Vous devez construire le chemin complet avec la fonction os.path.join().

>>> import os
>>> fileDir = r"C:\Test"
>>> fileExt = r".txt"
>>> [os.path.join(fileDir, _) for _ in os.listdir(fileDir) if _.endswith(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test1.txt']

La méthode pathlib.glob pour trouver les fichiers avec une certaine extension

Le module pathlib est introduit dans Python 3.4 qui offre des chemins de systèmes de fichiers orientés objet. Il fournit deux styles : Les chemins Windows dans le système d’exploitation Windows et les chemins POSIX dans les systèmes similaires à Unix.

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt')]

Le résultat est représenté par WindowsPath, et vous pouvez convertir le résultat en représentation de chaîne de caractères en ajoutant str(), comme

>>> [str(_) for _ in pathlib.Path(fileDir).glob(fileExt)]
['C:\\Test\\test.txt', 'C:\\Test\\test.txt']

Trouver des fichiers avec une certaine extension dans le répertoire et ses sous-répertoires en Python

Le motif C:\Test\*.txt recherche seulement les fichiers txt dans le répertoire C:\Test, mais pas dans ses sous-répertoires. Si vous voulez aussi obtenir les fichiers txt dans les sous-répertoires, vous pouvez modifier un peu le motif.

import glob

targetPattern = r"C:\Test\**\*.txt"
glob.glob(targetPattern)

Les caractères ** entre Test et .txt signifient qu’il devrait trouver les fichiers txt à la fois dans le répertoire et ses sous-répertoires.

Le module pathlib recherche les fichiers récursivement

De la même manière que vous ajoutez ** dans glob.glob pour rechercher des fichiers de manière récursive, vous pouvez aussi ajouter ** dans la méthode pathlib.Path.glob pour trouver les fichiers avec une certaine extension de manière récursive.

>>> import pathlib
>>> fileDir = r"C:\Test"
>>> fileExt = r"**\*.txt"
>>> list(pathlib.Path(fileDir).glob(fileExt))
[WindowsPath('C:/Test/test.txt'), WindowsPath('C:/Test/test1.txt'), WindowsPath('C:/Test/sub/test1.txt')]

Article connexe - Python file-path

  • Comment obtenir tous les fichiers d'un répertoire
  • Comment supprimer un fichier et un répertoire en Python
  • Comment vérifier si un fichier existe en Python
  • comments powered by Disqus