11.8. fnmatch — Filtrage par motif des noms de fichiers Unix¶
Code source : Lib/fnmatch.py
Ce module fournit la gestion des caractères de remplacement de style shell Unix, qui ne sont pas identiques à ceux utilisés dans les expressions régulières (documentés dans le module re). Les caractères spéciaux utilisés comme caractères de remplacement de style shell sont :
Motif |
Signification |
|---|---|
|
reconnaît n’importe quoi |
|
reconnaît n’importe quel caractère unique |
|
reconnaît n’importe quel caractère dans seq |
|
reconnaît n’importe quel caractère qui n’est pas dans seq |
Pour une correspondance littérale, il faut entourer le métacaractère par des crochets. Par exemple, '[?]' reconnaît le caractère '?'.
Note that the filename separator ('/' on Unix) is not special to this
module. See module glob for pathname expansion (glob uses
filter() to match pathname segments). Similarly, filenames starting with
a period are not special for this module, and are matched by the * and ?
patterns.
-
fnmatch.fnmatch(filename, pattern)¶ Teste si la chaîne de caractères filename correspond au motif pattern, en renvoyant
TrueouFalse. La casse de chacun des paramètres peut être normalisée en utilisantos.path.normcase().fnmatchcase()peut être utilisée pour réaliser une comparaison sensible à la casse, indépendamment du système d’exploitation.Cet exemple affiche tous les noms de fichiers du répertoire courant ayant pour extension
.txt:import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file)
-
fnmatch.fnmatchcase(filename, pattern)¶ Teste si filename correspond au motif pattern, en renvoyant
TrueouFalse; la comparaison est sensible à la casse et n’utilise pas la fonctionos.path.normcase().
-
fnmatch.filter(names, pattern)¶ Renvoie un sous-ensemble de la liste names correspondant au motif pattern. Similaire à
[n for n in names if fnmatch(n, pattern)], mais implémenté plus efficacement.
-
fnmatch.translate(pattern)¶ Renvoie le motif pattern, de style shell, converti en une expression régulière utilisable avec
re.match().Exemple :
>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '(?s:.*\\.txt)\\Z' >>> reobj = re.compile(regex) >>> reobj.match('foobar.txt') <_sre.SRE_Match object; span=(0, 10), match='foobar.txt'>
Voir aussi
- Module
glob Recherche de chemins de style shell Unix
