次のパターンを検討してください*.py
。py
拡張子で終わるすべてのパスに一致します。さて、他のすべてに一致するパターンを見つけることは可能ですか?
私はこれがそれを行うと思った: *[!.][!p][!y]
、しかしどうやらfnmatch.fnmatch
常にこれで返さFalse
れます。
正規表現は避けたいです。それらを使用できることはわかっていますが、この場合は不可能です。
次のパターンを検討してください*.py
。py
拡張子で終わるすべてのパスに一致します。さて、他のすべてに一致するパターンを見つけることは可能ですか?
私はこれがそれを行うと思った: *[!.][!p][!y]
、しかしどうやらfnmatch.fnmatch
常にこれで返さFalse
れます。
正規表現は避けたいです。それらを使用できることはわかっていますが、この場合は不可能です。
絶対に正しい唯一の答えは、不要なファイルのリストを生成し、このリストと完全な (フィルター処理されていない) ファイル リストとの違いを見つけることだと思います。set
(この手法は、https://stackoverflow.com/a/8645326/1858225を使用して、ここで見ることができます)
fnmatch
モジュール内の検索パターンを否定するための組み込みオプションはないようです。
文字単位の否定が機能しない理由の例については、user590028 の回答に対する私のコメントを参照してください。