PythonでのUnixスタイルのパス名パターンの拡張(glob)
多くの場合、プログラムはファイルシステム内のファイルのリストを反復処理する必要があり、多くの場合、名前はパターンと一致します。 globモジュールは、特定のディレクトリに、特定の拡張子を持つ、またはファイル名の一部として特定の文字列を使用して、ファイルを作成するのに役立ちます。
globモジュール関数で使用されるパターンマッチングメカニズムは、UNIXパス拡張ルールに従います。ただし、このモジュールはチルダ(〜)とシェル変数を拡張しません。
globモジュールには主に3つの機能があります
glob()
この関数は、pathnameパラメーターで指定されたパターンに一致するファイルのリストを返します。パス名は絶対パスまたは相対パスにすることができます。 *や?などのワイルドカードを含めることができます。
この関数の再帰パラメーターは、デフォルトではFalseです。 Trueの場合、現在のディレクトリのサブディレクトリが再帰的に検索され、指定されたパターンに一致するファイルが検索されます。
次のコードは、現在のディレクトリ内のすべてのファイルを「.py」拡張子で出力します。
>>> import glob >>> for file in glob.glob("*.py"): print (file)
次のコードでは、recursive =Trueパラメータを使用すると、サブディレクトリの「.py」拡張子が付いたファイルも出力されます。
>>> for file in glob.glob("*.py", recursive=True): print (file)
パターンパス名には、ワイルドカード文字?を含めることができます。次のステートメントは、名前が3文字で、最初の2文字が「pp」であるファイルのリストを出力します。
>>> for file in glob.glob("pp?.py"): print (file)
次のコードは、名前が数字で終わるファイルを出力します。
>>> for file in glob.glob('*[0-9].py') print (file)
次の構文により、指定されたパスに一致するファイルが再帰的に出力されます。
>>> glob.glob('**/*.py', recursive=True)
現在のディレクトリでディレクトリの名前を再帰的に出力するには、
>>> glob.glob('tcl/**/', recursive=True)
iglob()
この関数は、ファイルのリストの代わりにジェネレータオブジェクトを返します。 next()関数を使用すると、後続のファイル名を次のように出力できます。
>>> it=glob.iglob('*.py') >>> type(it) <class 'generator'> >>> while True: try: file=next(it) print (file) except StopIteration: break
escape()
この関数は、指定された文字をエスケープします。これは、特定の文字を含むファイルを名前の一部にする必要がある場合に役立ちます。次の例では、chars文字列に任意の文字が含まれるファイルを検索します。
>>> chars='[]()#' >>> for char in chars: esc='*'+glob.escape(char)+'.py' for file in (glob.glob(esc)): print (file) xyz[.py pp[].py pp(.py pp#.py
-
Pythonのジャンクファイルオーガナイザー?
これは、ほとんどのファイルとフォルダーを1つの場所に保持し、すべてのファイルが何であるか混乱することがあり、手動でそれを行うには怠惰すぎるPythonプログラマーにとって非常に役立つように思われるかもしれません。以下は、適切なフォルダ内のすべてを1回で整理または簡略化して、空のディレクトリを削除するPythonプログラムです。 したがって、さまざまなタイプのファイルが多数存在するディレクトリパスがあり(以下のように)、プログラムは各ファイルタイプをそれぞれのフォルダに分離します(以下のように)。 入力フォルダの構造 必要な出力 まず、さまざまなフォルダに分離するファイル
-
Pythonの葉序パターン?
葉序パターンとは何ですか? 戻ってみると、植物学のクラスや植物の世界では、葉序とは、フィボナッチスパイラルに見られるものと同様に、植物の茎に花、葉、または種子を配置することを意味します。フィボナッチ数列に基づくフィボナッチスパイラルは、パスカルの三角形に似たパターンに従う数字のセットです。フィボナッチ数列は-1、1、2、3、5、8、13、21、34、55、89、144などのようなものです。したがって、フィボナッチ数列は以前の数の合計です。 フィボナッチスパイラル 私たちは通常、私たちの周りのオブジェクトを理解するために対称性とパターンを探します。気付かないうちに、私たちの目はフィボナッチ数