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 |
[seq] |
reconnaît n’importe quel caractère dans seq |
[!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 '?'
.
Notons que le séparateur de nom de fichiers ('/'
sous Unix) n’est pas traité de manière spéciale par ce module. Voir le module glob
pour la recherche de chemins (glob
utilise fnmatch()
pour reconnaître les composants d’un chemin). De la même manière, les noms de fichiers commençant par une virgule ne sont pas traités de manière spéciale par ce module, et sont reconnus par les motifs *
et ?
.
-
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.
-
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; span=(0, 10), match='foobar.txt'>
Voir aussi
- Module
glob
- Recherche de chemins de style shell Unix