7

たとえばzshのように、パスを二重アスタリスクで再帰的に一致させる組み込みまたは簡単な方法はありますか?

たとえば、

path = 'foo/bar/ham/spam/eggs.py'

fnmatchを使用してテストできます

fnmatch(path, 'foo/bar/ham/*/*.py'

ただし、次のことができるようにしたいと思います。

fnmatch(path, 'foo/**/*.py')

fnmatchはそのパターンを regexにマップすることを知っているので、言葉の場合、追加のパターンで自分の fnmatch をロールバックできます**が、もっと簡単な方法があるかもしれません

4

4 に答える 4

4

パスで機能する fnmatch バリアントの場合、ファイルシステムをクロールするのと同じロジックでパスを照合する関数を実装するwcmatchというライブラリを使用できます。フラグを使用して有効な機能を制御できます。この場合、(再帰的なディレクトリ検索を使用して) 有効にします。globmatchglobGLOBSTAR**

>>> from wcmatch import glob
>>> glob.globmatch('some/file/path/filename.txt', 'some/**/*.txt', flags=glob.GLOBSTAR)
True
于 2020-02-11T17:09:17.053 に答える