サイトアイコン 【TechGrowUp】

Python開発入門32 Pythonのpathlibモジュールを使ったファイル操作

はじめに

Pythonでファイルやディレクトリを操作する際、従来はosos.pathモジュールが主に使われていました。しかし、Python 3.4以降で導入されたpathlibモジュールを使うと、オブジェクト指向のアプローチでこれらの操作を簡潔に記述できます。

pathlibは、ファイルパスをオブジェクトとして扱える便利なモジュールです。本記事では、pathlibを使ったファイルやディレクトリ操作の基本から応用までをわかりやすく解説します。

pathlibとは

pathlibの概要

pathlibは、ファイルパスを表現するためのオブジェクト指向のインターフェースを提供します。これにより、文字列操作ではなく、メソッドを使った直感的な操作が可能です。

例えば、パスの結合やファイルの存在確認が簡単になります。

pathlibの主な特徴

  1. オブジェクト指向設計
    ファイルパスを操作するためのメソッドが豊富に用意されています。
  2. クロスプラットフォーム対応
    WindowsやLinux、macOSで一貫した動作が可能です。
  3. 柔軟なファイル操作
    ファイルの作成、削除、読み取り、書き込みが簡単に行えます。

pathlibのインポート方法

pathlibモジュールを使用するには、以下のようにインポートします:

from pathlib import Path

Pathクラスがpathlibの中心となるクラスです。ファイルパスやディレクトリの操作に活用します。

基本的な使い方

Pathオブジェクトの作成

Pathオブジェクトは、ファイルやディレクトリのパスを表現します。

from pathlib import Path

# ファイルパスの作成
file_path = Path("example.txt")

# ディレクトリパスの作成
dir_path = Path("/path/to/directory")

説明:

ファイルやディレクトリの存在確認

exists()メソッドを使って、ファイルやディレクトリが存在するか確認できます。

file_path = Path("example.txt")
print(file_path.exists())  # TrueまたはFalse

説明:
exists()メソッドは、指定したパスが存在する場合にTrueを返します。

ファイルかディレクトリかを確認

print(file_path.is_file())  # True
print(file_path.is_dir())   # False

パスの結合

/演算子を使って簡単にパスを結合できます。

base_path = Path("/path/to")
new_path = base_path / "subdir" / "file.txt"
print(new_path)  # /path/to/subdir/file.txt

説明:
/演算子を使うことで、煩雑な文字列結合を避けられます。

ファイル操作

ファイルの作成

touch()メソッドを使って新しいファイルを作成できます。

file_path = Path("example.txt")
file_path.touch()

ファイルへの書き込み

ファイルにデータを書き込むには、以下のようにします:

file_path = Path("example.txt")
file_path.write_text("Hello, pathlib!")

ファイルの読み取り

ファイルからデータを読み取るには:

content = file_path.read_text()
print(content)

ファイルの削除

unlink()メソッドでファイルを削除できます。

file_path.unlink()

注意:
ファイルが存在しない場合、エラーが発生するため、事前に存在確認をするのがおすすめです。

ディレクトリ操作

ディレクトリの作成

mkdir()メソッドを使ってディレクトリを作成します。

dir_path = Path("new_directory")
dir_path.mkdir()

ディレクトリ内のファイル一覧取得

iterdir()メソッドでディレクトリ内のファイルやフォルダを取得できます。

for item in dir_path.iterdir():
    print(item)

ディレクトリの削除

空のディレクトリを削除するには:

dir_path.rmdir()

pathlibの応用例

再帰的なファイル検索

特定の拡張子を持つファイルを再帰的に検索するには、rglob()を使用します。

for txt_file in Path(".").rglob("*.txt"):
    print(txt_file)

説明:

パス属性の取得

file_path = Path("/path/to/example.txt")
print(file_path.name)     # example.txt
print(file_path.suffix)   # .txt
print(file_path.parent)   # /path/to

pathlibを使う際の注意点

  1. Pythonのバージョン
    pathlibはPython 3.4以降で利用可能ですが、最新バージョンのPythonを使用することを推奨します。
  2. WindowsとLinuxの違いに対応
    pathlibはクロスプラットフォーム対応ですが、絶対パスの記述方法がOSによって異なる点に注意してください。

まとめ

pathlibを使えば、ファイルやディレクトリの操作がシンプルで直感的になります。従来のosモジュールと比較して、コードの可読性が向上するため、積極的に活用してみてください!

モバイルバージョンを終了