「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > Python を使用して複数のディレクトリにまたがるファイルを効率的に検索するにはどうすればよいですか?

Python を使用して複数のディレクトリにまたがるファイルを効率的に検索するにはどうすればよいですか?

2024 年 11 月 8 日に公開
ブラウズ:374

How can I use Python to efficiently search for files across multiple directories?

Python でファイルを検索

ファイルの場所がシステムごとに異なる場合、Python でファイルを検索するのが困難になることがあります。幸いなことに、Python には、ディレクトリを横断してファイルを簡単に見つけることができる os.walk モジュールが用意されています。

os.walk for File Search

os.walk はジェネレーターを作成します。ディレクトリとそのサブディレクトリを反復処理し、反復ごとに 3 つのタプルを生成するオブジェクト:

  • root (str): 現在のディレクトリへの絶対パス
  • dirs (list): ディレクトリのリスト現在のディレクトリ内のサブディレクトリ
  • files (list): 現在のディレクトリ内のファイルのリスト

単一ファイルの検索

検索するには特定のファイルが最初に出現した場合は、生成されたタプルを反復処理して、ファイル名がファイルのリストにあるかどうかを確認します:

import os

def find(name, path):
    for root, dirs, files in os.walk(path):
        if name in files:
            return os.path.join(root, name)

ファイルの出現箇所をすべて検索

ファイルの出現箇所をすべて検索するには、一致を保存するリストを作成します:

def find_all(name, path):
    result = []
    for root, dirs, files in os.walk(path):
        if name in files:
            result.append(os.path.join(root, name))
    return result

一致するファイル パターン

パターンに一致するファイルを検索するには、fnmatch モジュールを使用します:

import os, fnmatch
def find(pattern, path):
    result = []
    for root, dirs, files in os.walk(path):
        for name in files:
            if fnmatch.fnmatch(name, pattern):
                result.append(os.path.join(root, name))
    return result

find('*.txt', '/path/to/dir')
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3