Python を使用してファイルを検索する
-
Python で
os.walk()
関数を使用してファイルを検索する -
Python で
glob.glob()
関数を使用してファイルを検索する -
Python で
Path.glob()
関数を使用してファイルを検索する
このチュートリアルでは、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
オブジェクトのリストを返します。このメソッドを使用すると、オペレーティングシステムに固有のパスオブジェクトを取得できます。
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