ref: 4bcd247b909898766d549c3990c230cbeb3d17a3
dir: /sys/src/cmd/python/Doc/lib/libfnmatch.tex/
\section{\module{fnmatch} --- \UNIX{} filename pattern matching} \declaremodule{standard}{fnmatch} \modulesynopsis{\UNIX\ shell style filename pattern matching.} \index{filenames!wildcard expansion} This module provides support for \UNIX{} shell-style wildcards, which are \emph{not} the same as regular expressions (which are documented in the \refmodule{re}\refstmodindex{re} module). The special characters used in shell-style wildcards are: \begin{tableii}{c|l}{code}{Pattern}{Meaning} \lineii{*}{matches everything} \lineii{?}{matches any single character} \lineii{[\var{seq}]}{matches any character in \var{seq}} \lineii{[!\var{seq}]}{matches any character not in \var{seq}} \end{tableii} Note that the filename separator (\code{'/'} on \UNIX) is \emph{not} special to this module. See module \refmodule{glob}\refstmodindex{glob} for pathname expansion (\refmodule{glob} uses \function{fnmatch()} to match pathname segments). Similarly, filenames starting with a period are not special for this module, and are matched by the \code{*} and \code{?} patterns. \begin{funcdesc}{fnmatch}{filename, pattern} Test whether the \var{filename} string matches the \var{pattern} string, returning true or false. If the operating system is case-insensitive, then both parameters will be normalized to all lower- or upper-case before the comparison is performed. If you require a case-sensitive comparison regardless of whether that's standard for your operating system, use \function{fnmatchcase()} instead. This example will print all file names in the current directory with the extension \code{.txt}: \begin{verbatim} import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print file \end{verbatim} \end{funcdesc} \begin{funcdesc}{fnmatchcase}{filename, pattern} Test whether \var{filename} matches \var{pattern}, returning true or false; the comparison is case-sensitive. \end{funcdesc} \begin{funcdesc}{filter}{names, pattern} Return the subset of the list of \var{names} that match \var{pattern}. It is the same as \code{[n for n in names if fnmatch(n, pattern)]}, but implemented more efficiently. \versionadded{2.2} \end{funcdesc} \begin{funcdesc}{translate}{pattern} Return the shell-style \var{pattern} converted to a regular expression. Example: \begin{verbatim} >>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '.*\\.txt$' >>> reobj = re.compile(regex) >>> print reobj.match('foobar.txt') <_sre.SRE_Match object at 0x...> \end{verbatim} \end{funcdesc} \begin{seealso} \seemodule{glob}{\UNIX{} shell-style path expansion.} \end{seealso}