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
など)のいずれかであり、シェルスタイルのワイルドカードを含めることができます。 壊れたシンボリックリンクが結果に含まれます(シェルの場合と同様)。
たとえば、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']