前のトピックへ

10.6. tempfile — 一時的なファイルやディレクトリの生成

次のトピックへ

10.8. fnmatch — Unix ファイル名のパターンマッチ

このページ

10.7. glob — Unix 形式のパス名のパターン展開

glob モジュールはUnix シェルで使われているルールに従って指定されたパターンにマッチするすべてのパス名を見つけ出します。チルダ展開は使えませんが、 *?[] で表される文字範囲には正しくマッチします。これは os.listdir() 関数と fnmatch.fnmatch() 関数を一緒に使って実行されていて、実際に subshell を呼び出しているわけではありません。(チルダ展開とシェル変数展開を利用したければ、 os.path.expanduser()os.path.expandvars() を使ってください。)

参考

最新バージョンの glob モジュールの Python ソースコード

glob.glob(pathname)

pathname (パスの指定を含んだ文字列でなければいけません。)にマッチする空の可能性のあるパス名のリストを返します。

pathname は( /usr/src/Python-1.5/Makefile のように)絶対パスでもいいし、(../../Tools/*/*.gif のように)相対パスでもよくて、シェル形式のワイルドカードを含んでいてもかまいません。結果には(シェルと同じく)壊れたシンボリックリンクも含まれます。

glob.iglob(pathname)

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

バージョン 2.5 で追加.

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

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

参考

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