Python を使用してファイルを検索する

Muhammad Maisam Abbas 2023年1月30日
  1. Python で os.walk() 関数を使用してファイルを検索する
  2. Python で glob.glob() 関数を使用してファイルを検索する
  3. Python で Path.glob() 関数を使用してファイルを検索する
Python を使用してファイルを検索する

このチュートリアルでは、Python でファイルを検索する方法について説明します。

Python で os.walk() 関数を使用してファイルを検索する

Python を使用してマシン上の特定のファイルのパスを検索する場合は、os モジュールを使用できます。os モジュールは、コードに多くの os 関連機能を提供します。os.walk() 関数は、入力パラメータとして path 文字列を受け取り、path 内の各ファイルのディレクトリパス、ディレクトリ名、およびファイル名を提供します。以下のサンプルコードは、os.walk() 関数を使用して Python でファイルを検索する方法を示しています。

import os


def findfile(name, path):
    for dirpath, dirname, filename in os.walk(path):
        if name in filename:
            return os.path.join(dirpath, name)


filepath = findfile("file2.txt", "/")
print(filepath)

出力:

/Users\maisa\Documents\PythonProjects\file2.txt

上記のコードでは、os.walk() 関数を使用してファイルを検索する findfile() 関数を宣言しました。findfile() 関数は、ファイルの名前とルートパスを入力パラメーターとして受け取り、指定されたファイルのパスを返します。このアプローチにより、ファイルの絶対パスがわかります。

Python で glob.glob() 関数を使用してファイルを検索する

glob.glob() 関数を使用して、現在の問題を解決することもできます。glob.glob() 関数は、入力パラメーターとしてパス名を受け取り、入力引数に一致するすべてのファイルパスのリストを返します。ファイルのみに一致する入力パラメーターとして正規表現を指定できます。以下のサンプルコードは、glob.glob() 関数を使用して Python でファイルを検索する方法を示しています。

import glob

filepath = glob.glob("**/file.txt", recursive=True)
print(filepath)

出力:

['Find File\\file.txt']

ファイル名を入力パラメーターとして glob.glob() 関数に渡し、ファイルの相対パスを返しました。このメソッドは、ファイルの相対パスと絶対パスを提供します。

Python で Path.glob() 関数を使用してファイルを検索する

もう 1つのアプローチは、pathlib モジュールを使用することです。この Python モジュールは、さまざまなオペレーティングシステムのファイルシステムパスを表すクラスを提供します。pathlib モジュール内の Path.glob() 関数を使用して、特定の問題を解決できます。この関数は、glob モジュール内の glob() 関数に似ています。Path.glob() 関数は、入力パラメーターとしてパターンを取り、入力引数に一致するパスオブジェクトのリストを返します。サンプルコードスニペットは、pathlib モジュールを使用して Python でファイルを検索する方法を示しています。

import pathlib

filepath = sorted(pathlib.Path(".").glob("**/file2.txt"))
print(filepath)

出力:

[WindowsPath('file2.txt')]

ファイルに一致するパターン文字列を Path.glob() 関数に渡しました。Path.glob() 関数は、パターンに一致する WindowsPath オブジェクトのリストを返します。このメソッドを使用すると、オペレーティングシステムに固有のパスオブジェクトを取得できます。

Muhammad Maisam Abbas avatar Muhammad Maisam Abbas avatar

Maisam is a highly skilled and motivated Data Scientist. He has over 4 years of experience with Python programming language. He loves solving complex problems and sharing his results on the internet.

LinkedIn

関連記事 - Python File