ホームページ  >  記事  >  バックエンド開発  >  Python でサブフォルダーを再帰的に検索してファイルを取得する方法

Python でサブフォルダーを再帰的に検索してファイルを取得する方法

Susan Sarandon
Susan Sarandonオリジナル
2024-10-30 04:12:28162ブラウズ

How to Recursively Search Sub-Folders and Retrieve Files in Python?

再帰的なサブフォルダー検索とファイルの取得

プログラミングの領域では、ディレクトリを走査してファイルを取得することが一般的なタスクになることがあります。効率的なアプローチの 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。