\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}
Return 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.
Broken symlinks are included in the results (as in the shell).
\end{funcdesc}

\begin{funcdesc}{iglob}{pathname}
Return an iterator which yields the same values as \function{glob()}
without actually storing them all simultaneously.
\versionadded{2.5}
\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}
