再帰的なサブフォルダー検索とファイルの取得
プログラミングの領域では、ディレクトリを走査してファイルを取得することが一般的なタスクになることがあります。効率的なアプローチの 1 つは、再帰アルゴリズムを使用してサブフォルダーを検索し、特定の基準を満たすファイルのリストを蓄積することです。
問題が発生しました
ユーザーが障害に遭遇しました再帰的なサブフォルダー検索で特定のファイルのリストを作成しようとしているとき。この問題は、ファイルを含む現在のフォルダーではなくサブフォルダーのリストを取得するサブフォルダー変数に起因します。
subFolder の目的
subFolder 変数は、次の目的を保持することを目的としています。目的のファイルが存在するメイン フォルダーの下のサブフォルダーの名前。
解決策
この問題を解決する鍵は、「ルート」を利用することにあります。または、「subFolder」の代わりに「dirpath」変数を使用します。この変数は、再帰中に走査される現在のディレクトリへの絶対パスを保持します。このパスを fileNamePath の構築に組み込むことで、必要な精度を達成できます。
<code class="python">import os result = [os.path.join(dp, f) for dp, dn, filenames in os.walk(PATH) for f in filenames if os.path.splitext(f)[1] == '.txt']</code>
Glob モジュールの拡張
代わりの効率的なアプローチには、Python の利用が含まれます。組み込みのグロブモジュール。 Glob は、拡張子に基づいたファイルの選択に優れています。
<code class="python">import os from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]</code>
ジェネレーター関数
簡潔で効率的な実装のために、ジェネレーター関数を使用することもできます。
<code class="python">from itertools import chain result = (chain.from_iterable(glob(os.path.join(x[0], '*.txt')) for x in os.walk('.')))</code>
Python 3.4 のソリューション
Python 3.4 以降を使用している場合は、pathlib モジュールの rglob() 関数を利用できます。
<code class="python">from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))</code>
これらのアプローチは、サブフォルダーを再帰的に検索し、必要な基準を満たすファイルのリストをコンパイルするための効果的なソリューションを提供し、ファイル取得タスクを簡単にします。
以上がPython でサブフォルダーを再帰的に検索してファイルを取得する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。