\

Pythonには、ファイル名のパターンマッチングを行うための2つのモジュール、globfnmatchがあります。これらは似たような機能を持っていますが、それぞれ異なる特性と使用方法があります。

fnmatch

fnmatchモジュールは、Unixシェルスタイルのワイルドカードをサポートしています。fnmatchは、ファイル名がパターンに一致するかどうかをテストし、真偽値を返します。例えば、次のコードは、現在のディレクトリ内の.txt拡張子を持つすべてのファイル名を出力します。

import fnmatch
import os
for file in os.listdir('.'):
    if fnmatch.fnmatch(file, '*.txt'):
        print(file)

glob

一方、globモジュールは、ディレクトリ内のすべての名前に対してパターンをマッチさせ、マッチしたファイル名のリストを返します。globは、ディレクトリの各レベルでマッチングを行い、ワイルドカードをディレクトリ部分に許可します。

globfnmatchの主な違いは、globがファイルシステムを探索するのに対し、fnmatchはそうではないということです。実際、globの実装ではfnmatchが使用されています。

これらの違いを理解することで、Pythonでのファイル名のパターンマッチングがより効率的になります。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です