【Python入門】pathlibの使い方(パス操作)

【Python入門】pathlibの使い方(パス操作)
スポンサーリンク
スポンサーリンク

Pythonのpathlibモジュールを使うと、ファイル・ディレクトリ(フォルダ)のパスをオブジェクトとして操作することができ、os.pathより簡単にパスを扱えます。

スポンサーリンク

使用モジュール

Python 3.4以降では標準モジュールに含まれているpathlibを使用しますので、インストールは不要です。

モジュール :pathlib (公式ドキュメント
インストール:不要

モジュールのインポート

pathlibモジュールのPathクラスをインポートします。

ディレクトリ構成

D:\PythonScript\python-work\code でスクリプトを実行します。

D:\PythonScript\python-work\code
└── temp
     ├── sub1
     |    ├── file1.txt
     |    └── file1.bmp
     └── sub2
     |    ├── file2.txt
     |    └── file2.bmp
     ├── file.txt
     └── file.bmp

Pathオブジェクトの生成

Path() の引数にパスを含む文字列を指定する事でPathオブジェクトを生成します。

 Path(絶対パスまたは相対パス文字列)

実行環境がWindowsの場合、WindowsPathオブジェクトになります。

カレントディレクトリの取得

カレントディレクトリ(作業ディレクトリ)を取得するには、getcwd()メソッドを使用します。
またはPath()でも取得可能ですが、結果は相対パスになります。絶対パスに変換するためにはresolve() を使用します。

Path.getcwd()
または
Path()

パスの連結

Pathオブジェクトに対して/演算子を使うとパスが連結できます。

 Pathオブジェクト/ 連結パス文字列1 / 連結パス文字列2 ・・・


joinpath()メソッドでも連結が可能です。複数のパスを連結する場合は、引数を複数指定します。

Pathオブジェクト.joinpath(連結パス文字列1, 連結パス文字列2 ・・・)

親ディレクトリへ移動

相対パス..を連結すると親ディレクトリ(上位ディレクトリ)へ移動できます。

結果は相対パスとなるため絶対パスに変換するには、absolute()resolve() を使用します。


parentプロパティでも親ディレクトリに移動できます。

 Pathオブジェクト.parent


またparentsプロパティでインデックスを指定することで移動する階層を選択することができます。

 Pathオブジェクト.parents[インデックス]

パスの存在確認

パスの存在確認にはexist()メソッドを使用します。結果はブール型(True/False)で返されます。

 Pathオブジェクト.exists()

ファイル名・拡張子の取得

ファイル名取得は name 、拡張子は suffix 、拡張子を除いたファイル名は stem プロパティを指定します。

Pathオブジェクト.name
Pathオブジェクト.suffix
Pathオブジェクト.stem

ファイル名・拡張子を変更

ファイル名や拡張子を変更する事ができます。ファイル名は with_name、拡張子は with_suffix、拡張子を除いたファイル名は with_stem を使用します。

Pathオブジェクト.with_name(変更後の文字列)
Pathオブジェクト.with_suffix(変更後の文字列)
Pathオブジェクト.with_stem(変更後の文字列) 

特定の文字列が含まれるか検索

パスに特定の文字列が含まれるかを検索するには、match()メソッドを使用します。matchは右側から一致を調べるので、パターンの記述を合わせる必要があります。

 Pathオブジェクト.match(パターン文字列)

絶対パスと相対パスの変換

以下のパスを例にします。


相対パスを絶対パスに変換するには、resolve() を使用します。

 Pathオブジェクト.resolve()


相対パスに..が含まれている場合、正しく解釈され絶対パスに変換されます。


絶対パスを相対パスに変換するには、relative_to() を使用します。引数には基点となるパスを指定します。

 Pathオブジェクト.relative_to(相対パスまたは絶対パス)

引数に相対パスを指定することで、別のパスを基点とする相対パスに変更することも可能です。

Pathオブジェクトを文字列に変換する

Pathオブジェクトは文字列として取得したい場合は、str()を使用します。

 str(Pathオブジェクト)

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

ディレクトリ名とファイル名の一覧を取得するには iterdir()メソッドを使用します。
取得結果はリストになります。

Pathオブジェクト.iterdir()

指定したパス直下の情報のみ取得できます。
サブディレクトリの中までを取得したい場合は、次に紹介する再帰的に取得する方法を使用します。

ディレクトリ名とファイル名を再帰的に取得

サブディレクトリも含め再帰的にディレクトリ名とファイル名を取得するには、rglob()メソッドを使用します。引数にマッチさせるパターン文字列を指定します。

Pathオブジェクト.rglob(パターン文字列)

全てのファイルを対象にするには引数に '*' を指定します。

拡張子.bmpのファイルのみを取得する場合は、以下のように引数を指定します。

ディレクトリ名のみ取得

ディレクトリ名のみを取得したい場合は、is_dir()メソッドでディレクトリ判定を行いTrueのパスのみ取得します。

Pathオブジェクト.is_dir()

ファイル名のみ取得

ファイル名のみを取得する場合は、is_file()メソッドでファイル判定を行いTrueのパスのみ取得します。

Pathオブジェクト.is_file()

pathlibの使い方の解説は以上になります。

関連記事
Pythonでカレントディレクトリを取得・変更
Pythonでディレクトリ(フォルダ)・ファイルのコピー、移動(shutilモジュール)
Pythonでディレクトリ名・ファイル名の一覧取得(os, globモジュール)
Pythonでファイル名の一括変更(os, globモジュール)