ホームページ > バックエンド開発 > Python チュートリアル > Python を使用してサブフォルダー内のすべての「.txt」ファイルを効率的に検索する方法

Python を使用してサブフォルダー内のすべての「.txt」ファイルを効率的に検索する方法

Patricia Arquette
リリース: 2024-10-29 19:28:02
オリジナル
937 人が閲覧しました

How to Efficiently Find All

特定のファイル タイプのサブフォルダーを効率的に再帰的に検索する方法

スクリプトを作成する場合、多くの場合、メイン フォルダー内のサブフォルダーを深く検索する必要があります。 。 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート