fnmatch — Unixファイル名パターンマッチング—Pythonドキュメント

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

fnmatch —Unixファイル名パターンマッチング

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


このモジュールは、正規表現( re モジュールに記載されています)とではないであるUnixシェルスタイルのワイルドカードのサポートを提供します。 シェルスタイルのワイルドカードで使用される特殊文字は次のとおりです。

パターン 意味
* すべてに一致します
? 任意の1文字に一致します
[seq] seq の任意の文字に一致します
[!seq] seq にない任意の文字に一致します

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

ファイル名区切り文字(Unixでは'/')は、このモジュールに固有のではないことに注意してください。 パス名の展開については、モジュール glob を参照してください( globfilter()を使用してパス名セグメントを照合します)。 同様に、ピリオドで始まるファイル名はこのモジュールにとって特別なものではなく、*および?パターンと一致します。

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'>

も参照してください

モジュール glob
Unixシェルスタイルのパス拡張。