# `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 arquivos iniciados com um ponto (`.`) só podem ser correspondidos com padrões que também iniciam com um ponto, ao contrário de `fnmatch.fnmatch()` ou `pathlib.Path.glob()`. (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, *, root_dir=None, dir_fd=None, 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 root_dir não for `None`, deve ser um objeto caminho ou similar especificando o diretório raiz para pesquisa. Tem o mesmo efeito em `glob()` que alterar o diretório atual antes de chamá-lo. Se pathname for relativo, o resultado conterá caminhos relativos a root_dir.

  Esta função oferece suporte para caminhos relativos aos descritores de diretório com o parâmetro dir_fd.

  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 os argumentos `pathname`, `recursive`.

  Levanta um evento de auditoria `glob.glob/2` com os argumentos `pathname`, `recursive`, `root_dir`, `dir_fd`.

  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 “`**`”.

  Alterado na versão 3.10: Adicionados os parâmetros root_dir e dir_fd.

`glob.``iglob`(pathname, *, root_dir=None, dir_fd=None, 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 os argumentos `pathname`, `recursive`.

  Levanta um evento de auditoria `glob.glob/2` com os argumentos `pathname`, `recursive`, `root_dir`, `dir_fd`.

  Alterado na versão 3.5: Suporte a globs recursivos usando “`**`”.

  Alterado na versão 3.10: Adicionados os parâmetros root_dir e dir_fd.

`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)