\section{\module{glob} ---
         \UNIX{} style pathname pattern expansion}

\declaremodule{standard}{glob}
\modulesynopsis{\UNIX\ shell style pathname pattern expansion.}


The \module{glob} module finds all the pathnames matching a specified
pattern according to the rules used by the \UNIX{} shell.  No tilde
expansion is done, but \code{*}, \code{?}, and character ranges
expressed with \code{[]} will be correctly matched.  This is done by
using the \function{os.listdir()} and \function{fnmatch.fnmatch()}
functions in concert, and not by actually invoking a subshell.  (For
tilde and shell variable expansion, use \function{os.path.expanduser()}
and \function{os.path.expandvars()}.)
\index{filenames!pathname expansion}

\begin{funcdesc}{glob}{pathname}
Returns a possibly-empty list of path names that match \var{pathname},
which must be a string containing a path specification.
\var{pathname} can be either absolute (like
\file{/usr/src/Python-1.5/Makefile}) or relative (like
\file{../../Tools/*/*.gif}), and can contain shell-style wildcards.
\end{funcdesc}

For example, consider a directory containing only the following files:
\file{1.gif}, \file{2.txt}, and \file{card.gif}.  \function{glob()}
will produce the following results.  Notice how any leading components
of the path are preserved.

\begin{verbatim}
>>> import glob
>>> glob.glob('./[0-9].*')
['./1.gif', './2.txt']
>>> glob.glob('*.gif')
['1.gif', 'card.gif']
>>> glob.glob('?.gif')
['1.gif']
\end{verbatim}


\begin{seealso}
  \seemodule{fnmatch}{Shell-style filename (not path) expansion}
\end{seealso}
