Comment trouver des fichiers avec une certaine extension seulement en Python
-
La méthode
glob.glob
pour trouver les fichiers avec une certaine extension -
La méthode
os.listdir()
pour trouver les fichiers avec une certaine extension -
La méthode
pathlib.glob
pour trouver les fichiers avec une certaine extension - Trouver des fichiers avec une certaine extension dans le répertoire et ses sous-répertoires en Python
-
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')]
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