10.8. fnmatch — Unixファイル名パターンマッチング—Pythonドキュメント
10.8。 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)]
と同じですが、より効率的に実装されます。バージョン2.2の新機能。
- fnmatch.translate(pattern)
re.match()で使用するために、正規表現に変換されたシェルスタイルの pattern を返します。
例:
>>> import fnmatch, re >>> >>> regex = fnmatch.translate('*.txt') >>> regex '.*\\.txt\\Z(?ms)' >>> reobj = re.compile(regex) >>> reobj.match('foobar.txt') <_sre.SRE_Match object at 0x...>