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
True
orFalse
. 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
True
orFalse
; 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