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
のように)相対パスでもよくて、シェル形式のワイルドカードを含んでいてもかまいません。結果には(シェルと同じく)壊れたシンボリックリンクも含まれます。
たとえば、次の三つのファイルだけがあるディレクトリを考えてください: 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
モジュール- シェル形式の(パスではない)ファイル名展開