概要

  • OOPでパスの管理.os.path の代替として使える.
  • パスの結合などが直感的にかけて便利.
  • 最近移行している人が多い.

基本的な関数

from pathlib import Path

p = Path()   # 引数なしだとカレントディレクトリ
#=> PosixPath('.')
p.cwd()      # 絶対パスを返す
p.resolve()  # 相対パスとシンボリックリンクの解決 (絶対パス)
p.home()     # ホームディレクトリ
p.exists()
p.is_dir()
p.is_file()

list(p.glob('*')) # カレントディレクトリの全てのファイル

ファイル読み込み

with open(p, 'r') as f: # PosixPathでも受け付ける
  contents = f.read()
with p.open() as f:     # デフォルトは 'r'
  contents = f.read()

ファイル書き込み

改行文字は付与されない.

p.write_text('Hello, World!')
p.read_text()  # 読み込み
#=> 'Hello, world!'

パスの結合

  • 直感的に’/’演算子が使える
  • スラッシュなしでも大丈夫
p / 'path' / 'to/' / 'dir/file'
p.joinpath('path/to/dir/file')
#=> PosixPath('.../path/to/dir/file')

文字列にする

  • __fspath__ に格納されている.
p.__fspath__()
str(p)

os.fspath では,文字列ならそのまま,PosixPathならfspathを返してくれる

import os
os.fspath(p)

Reference

pathlib