:mod:glob --- Expansão de padrão de nome de arquivo no estilo Unix
******************************************************************

**Código-fonte:** Lib/glob.py

======================================================================

O módulo "glob" encontra todos os nomes de caminho que correspondem a
um padrão especificado de acordo com as regras usadas pelo shell Unix,
embora os resultados sejam retornados em ordem arbitrária. Nenhuma
expansão de til é feita, mas "*", "?" e os intervalos de caracteres
expressos com "[]" serão correspondidos corretamente. Isso é feito
usando as funções "os.scandir()" e "fnmatch.fnmatch()" em conjunto, e
não invocando realmente um subshell. Observe que, ao contrário de
"fnmatch.fnmatch()", "glob" trata nomes de arquivos que começam com um
ponto (".") como casos especiais. (Para expansão de til e variável de
shell, use "os.path.expanduser()" e "os.path.expandvars()".)

Para uma correspondência literal, coloque os metacaracteres entre
colchetes. Por exemplo, "'[?]'" corresponde ao caractere "'?'".

Ver também:

  O módulo "pathlib" oferece objetos de caminho de alto nível.

glob.glob(pathname, *, recursive=False)

   Return a possibly-empty list of path names that match *pathname*,
   which must be a string containing a path specification. *pathname*
   can be either absolute (like "/usr/src/Python-1.5/Makefile") or
   relative (like "../../Tools/*/*.gif"), and can contain shell-style
   wildcards. Broken symlinks are included in the results (as in the
   shell). Whether or not the results are sorted depends on the file
   system.  If a file that satisfies conditions is removed or added
   during the call of this function, whether a path name for that file
   be included is unspecified.

   Se *recursive* for verdadeiro, o padrão ""**"" corresponderá a
   qualquer arquivo e zero ou mais diretórios, subdiretórios e links
   simbólicos para diretórios. Se o padrão for seguido por um "os.sep"
   ou "os.altsep", então os arquivos não irão corresponder.

   Levanta um evento de auditoria "glob.glob" com argumentos
   "pathname", "recursive".

   Nota:

     Usar o padrão ""**"" em grandes árvores de diretório pode
     consumir uma quantidade excessiva de tempo.

   Alterado na versão 3.5: Suporte a globs recursivos usando ""**"".

glob.iglob(pathname, *, recursive=False)

   Retorna um *iterador* que produz os mesmos valores que "glob()" sem
   realmente armazená-los todos simultaneamente.

   Levanta um evento de auditoria "glob.glob" com argumentos
   "pathname", "recursive".

glob.escape(pathname)

   Escapa todos os caracteres especiais ("'?'", "'*'" e "'['"). Isso é
   útil se você deseja corresponder a uma string literal arbitrária
   que pode conter caracteres especiais. Os caracteres especiais nos
   pontos de compartilhamento de unidade/UNC não têm escape, por
   exemplo, no Windows  "escape('//?/c:/Quo vadis?.txt')" retorna
   "'//?/c:/Quo vadis[?].txt'".

   Novo na versão 3.4.

Por exemplo, considere um diretório contendo os seguintes arquivos:
"1.gif", "2.txt", "card.gif" e um subdiretório "sub" que contém apenas
o arquivo "3.txt". "glob()" produzirá os seguintes resultados. Observe
como todos os componentes principais do caminho são preservados.

   >>> import glob
   >>> glob.glob('./[0-9].*')
   ['./1.gif', './2.txt']
   >>> glob.glob('*.gif')
   ['1.gif', 'card.gif']
   >>> glob.glob('?.gif')
   ['1.gif']
   >>> glob.glob('**/*.txt', recursive=True)
   ['2.txt', 'sub/3.txt']
   >>> glob.glob('./**/', recursive=True)
   ['./', './sub/']

Se o diretório contém arquivos começando com "." eles não serão
correspondidos por padrão. Por exemplo, considere um diretório
contendo "card.gif" e ".card.gif"

   >>> import glob
   >>> glob.glob('*.gif')
   ['card.gif']
   >>> glob.glob('.c*')
   ['.card.gif']

Ver também:

  Módulo "fnmatch"
     Expansão de nome de arquivo no estilo shell (não caminho)
