【Python】pathlibモジュールを使ったファイル操作まとめ【保存版】

この記事はこんな方のために書いています。

・pathlibモジュールのコマンドを忘れてしまった方

・pathlibモジュールを使ってみたい方

本記事ではPython3.4から導入された『pathlib』モジュールについて解説していきます。pathlibはosモジュール同様、ファイル・ディレクトリの操作が可能なモジュールです。

pathlibを使えば、下記のようなことができます。

  • パスの作成
  • パスの結合
  • パスが存在するかの確認
  • パスがファイルかディレクトリなのか判別
  • パスのファイル名、拡張子を取得

pathlibを使う準備をしよう

デスクトップでもどこでも良いので、下画像のファイル構成になるように、必要なファイルやディレクトリを作成してください。

ターミナルで作成してもOKですが、VScode上で操作すると分かりやすいですね。

ファイル構成


今回はmain.pyにPythonのコードを書いていきます。

pathlibを使うためには、main.pyでimport文で読み込む必要があります。
pathlibに限らず、モジュールを使用する際は、import文で読み込みます。

from pathlib import Path

ここまででpathlibを使用する準備は完了です。

pathlibコマンド① Pathでパスを作成する

ファイルやディレクトリのパスを作成するのは、『Path()』コマンドです。

Path(作成したいファイル名 or ディレクトリ名)


まずはtest_dirディレクトリのパスを作成します。

from pathlib import Path

# パスの作成
p = Path('test_dir')
print(p) #実行結果 test_dir

Pathコマンドでパスを作成することで、これから紹介していくpathlibの便利なコマンドを使えるようになります。

pathlibコマンド② パスの存在確認する exists

exists(パス名)』でパスが存在するか確認できます。

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの存在・種類確認
print(p.exists()) #実行結果 True

pathlibコマンド③ パスの種類を確認する is_fileとis_dir

パスがファイルかディレクトリか判別するコマンドが『is_file(パス名)』『is_dir(パス名)』です。

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの種類確認
print(p.is_file()) #False
print(p.is_dir()) #True

今回の場合、test_dirはディレクトリなので、is_dir()の結果がTrueになります。

pathlibコマンド④ ファイル名を結合してパスを作成する

sub_dirディレクトリ配下のtest5.txtのパスを作成したい場合、『/ (スラッシュ)』を使えばOKです。

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの結合
new_path = p / 'sub_dir' / 'test5.txt'
print(new_path) 

#test_dir/sub_dir/test5.txt

pathlibコマンド⑤ ファイル名を取得する name

『パス名.name』で、パスからファイル名を取得することができます。

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの結合
new_path = p / 'sub_dir' / 'test5.txt'
print(new_path) 

# ファイル名を取得
print(new_path.name) #test5.txt

pathlibコマンド⑥ ファイルの拡張子を取得する suffix

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの結合
new_path = p / 'sub_dir' / 'test5.txt'
print(new_path) 

# 拡張子の取得
print(new_path.suffix) #.txt

pathlibコマンド⑦ 拡張子以外を抜き出す stem

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの結合
new_path = p / 'sub_dir' / 'test5.txt'
print(new_path) 

# ファイル名から拡張子を除いた文字
print(new_path.stem) #test5

pathlibコマンド⑧ パスを分解し要素を抜き出す parts

パスを分解して、要素をタプルで返す。

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの結合
new_path = p / 'sub_dir' / 'test5.txt'
print(new_path) 

# パスを分解したものを取得
print(new_path.parts) #('test_dir', 'sub_dir', 'test5.txt')

pathlibコマンド⑨ 親ディレクトリを取得する parent

from pathlib import Path

# パスの作成
p = Path('test_dir')

# パスの結合
new_path = p / 'sub_dir' / 'test5.txt'
print(new_path) 

# 親ディレクトリを取得
print(new_path.parent) #test_dir/sub_dir