fnmatch —Unixファイル名パターンマッチング
ソースコード: :source: `Lib / fnmatch.py`
このモジュールは、正規表現( re モジュールに記載されています)とではないであるUnixシェルスタイルのワイルドカードのサポートを提供します。 シェルスタイルのワイルドカードで使用される特殊文字は次のとおりです。
パターン | 意味 |
---|---|
*
|
すべてに一致します |
?
|
任意の1文字に一致します |
[seq]
|
seq の任意の文字に一致します |
[!seq]
|
seq にない任意の文字に一致します |
リテラル一致の場合は、メタ文字を角かっこで囲みます。 たとえば、'[?]'
は文字'?'
と一致します。
ファイル名区切り文字(Unixでは'/'
)は、このモジュールに固有のではないことに注意してください。 パス名の展開については、モジュール glob を参照してください( glob は filter()を使用してパス名セグメントを照合します)。 同様に、ピリオドで始まるファイル名はこのモジュールにとって特別なものではなく、*
および?
パターンと一致します。
- fnmatch.fnmatch(filename, pattern)
filename 文字列が pattern 文字列と一致するかどうかをテストし、 True または False を返します。 両方のパラメーターは、 os.path.normcase()を使用して大文字と小文字が正規化されます。 fnmatchcase()を使用すると、オペレーティングシステムの標準であるかどうかに関係なく、大文字と小文字を区別して比較を実行できます。
この例では、現在のディレクトリ内のすべてのファイル名を拡張子
.txt
で出力します。import fnmatch import os for file in os.listdir('.'): if fnmatch.fnmatch(file, '*.txt'): print(file)
- fnmatch.fnmatchcase(filename, pattern)
- ファイル名がパターンと一致するかどうかをテストし、 True または False を返します。 比較では大文字と小文字が区別され、 os.path.normcase()は適用されません。
- fnmatch.filter(names, pattern)
- パターンに一致する反復可能な名前の要素からリストを作成します。
[n for n in names if fnmatch(n, pattern)]
と同じですが、より効率的に実装されます。
- fnmatch.translate(pattern)
re.match()で使用するために、正規表現に変換されたシェルスタイルの pattern を返します。
例:
>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '(?s:.*\\.txt)\\Z' >>> reobj = re.compile(regex) >>> reobj.match('foobar.txt') <re.Match object; span=(0, 10), match='foobar.txt'>