特定のファイル タイプのサブフォルダーを効率的に再帰的に検索する方法
スクリプトを作成する場合、多くの場合、メイン フォルダー内のサブフォルダーを深く検索する必要があります。 。 Python では、os.walk 関数はディレクトリを再帰的に走査できます。ただし、特定の種類のファイルのみを抽出するのは難しい場合があります。
この例では、目的は、メイン フォルダーとそのサブフォルダー内のすべての ".txt" ファイルのリストを作成することです。このコードは os.walk を使用してすべてのファイルとサブフォルダーを反復処理しますが、subFolder は各ファイルの正しいサブフォルダーではなく、サブフォルダーのリストを保持します。
これを解決するには、現在のフォルダーを表す「root」変数を使用します。ディレクトリ パスは、サブフォルダーの代わりに使用する必要があります。各ファイルには対応するルートがあり、ファイル システム内のファイルの場所を示します。
最適化されたソリューションは次のとおりです。
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']
このコードは、すべてのルート ディレクトリ、サブディレクトリ、およびファイルを反復処理します。 PATH フォルダー。 「.txt」拡張子を持つファイルが結果リストに追加されます。
代わりに、glob モジュールを使用して拡張子ベースの選択を簡素化できます:
from glob import glob result = [y for x in os.walk(PATH) for y in glob(os.path.join(x[0], '*.txt'))]
Python 3.4 の場合、より簡潔なソリューションPathlib を使用した方法が利用可能です:
from pathlib import Path result = list(Path(".").rglob("*.[tT][xX][tT]"))
これらのソリューションは、サブフォルダーを効率的に検索し、拡張子に基づいてファイルを抽出し、それらをリストとして返します。
以上がPython を使用してサブフォルダー内のすべての「.txt」ファイルを効率的に検索する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。