10.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)¶ Test whether the filename string matches the pattern string, returning
TrueorFalse. Both parameters are case-normalized usingos.path.normcase().fnmatchcase()can be used to perform a case-sensitive comparison, regardless of whether that’s standard for the operating system.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)¶ Test whether filename matches pattern, returning
TrueorFalse; the comparison is case-sensitive and does not applyos.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.Nouveau dans la version 2.2.
-
fnmatch.translate(pattern)¶ Return the shell-style pattern converted to a regular expression for using with
re.match().Exemple :
>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '.*\\.txt\\Z(?ms)' >>> reobj = re.compile(regex) >>> reobj.match('foobar.txt') <_sre.SRE_Match object at 0x...>
Voir aussi
- Module
glob Recherche de chemins de style shell Unix
