Comment trouver des fichiers avec une certaine extension seulement en Python

Jinku Hu 30 janvier 2023
  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
Comment trouver des fichiers avec une certaine extension seulement en Python

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')]
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Article connexe - Python File