# 10.7. `glob` --- Unix 形式のパス名のパターン展開

ソースコード: Lib/glob.py

`glob` モジュールは Unix シェルで使われているルールに従い指定されたパターンに一致するすべてのパス名を見つけ出します。返される結果の順序は不定です。チルダは展開されませんが、`*`, `?`, および `[]` で表現される文字範囲については正しくマッチされます。これは、関数 `os.listdir()` および `fnmatch.fnmatch()` を使用して行われており、実際にサブシェルを呼び出しているわけではありません。`fnmatch.fnmatch()` と異なり、`glob` はドット (`.`) で始まるファイル名は特別扱いする点に注意してください。(チルダおよびシェル変数の展開を利用したい場合は `os.path.expanduser()` および `os.path.expandvars()` を使用してください。)

文字通りにマッチさせる場合はメタ文字を括弧に入れてください。例えば、`'[?]'` は文字 `'?'` にマッチします。

`glob.``glob`(pathname)

  pathname (パスの指定を含んだ文字列でなければいけません。)にマッチする空の可能性のあるパス名のリストを返します。 pathname は(`/usr/src/Python-1.5/Makefile` のように)絶対パスでもいいし、(`../../Tools/*/*.gif` のように)相対パスでもよくて、シェル形式のワイルドカードを含んでいてもかまいません。結果には(シェルと同じく)壊れたシンボリックリンクも含まれます。

`glob.``iglob`(pathname)

  実際には一度に全てを格納せずに、 `glob()` と同じ値を順に生成する イテレータ を返します。

  バージョン 2.5 で追加.

たとえば、次の三つのファイルだけがあるディレクトリを考えてください: `1.gif` 、 `2.txt` 、 `card.gif` 。 `glob()` は次のような結果になります。パスに接頭するどの部分が保たれているかに注意してください。

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

ディレクトリが `.` で始まるファイルを含んでいる場合、デフォルトでそれらはマッチしません。例えば、 `card.gif` と `.card.gif` を含むディレクトリを考えてください:

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

参考

`fnmatch` モジュール

  シェル形式の(パスではない)ファイル名展開