10.7. glob — Unixスタイルのパス名パターンの拡張—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/glob
移動先:案内検索

10.7。 グロブ —UNIXスタイルのパス名パターンの拡張

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



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

リテラル一致の場合は、メタ文字を角かっこで囲みます。 たとえば、'[?]'は文字'?'と一致します。

glob.glob(pathname)
pathname に一致する、空の可能性のあるパス名のリストを返します。これは、パス指定を含む文字列である必要があります。 パス名は、絶対(/usr/src/Python-1.5/Makefileなど)または相対(../../Tools/*/*.gifなど)のいずれかであり、シェルスタイルのワイルドカードを含めることができます。 壊れたシンボリックリンクが結果に含まれます(シェルの場合と同様)。
glob.iglob(pathname)

イテレータを返します。これは、実際にすべてを同時に格納せずに、 glob()と同じ値を生成します。

バージョン2.5の新機能。

たとえば、1.gif2.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
シェルスタイルのファイル名(パスではない)展開