\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}