[python] pathlib の使い方

pathlib の使い方

基本的な使い方

from pathlib import Path

cwd_path = Path('.')  # >>> PosixPath('.')
relative_path = Path("scripts") / "python" / "util.py"  # >>> PosixPath('scripts/python/util.py')
absolute_path = Path("/etc") / "init.d" / "reboot"  # >>> PosixPath('/etc/init.d/reboot')

一覧

以降のサンプルコードでは、次の変数pを使う。

p = Path('tests') / 'python' / 'pathlib.py'
# >>> PosixPath('tests/python/pathlib.py')

PurePath

pathliib列でのpPurePathを表すものとする。

変換

意味pathlibサンプルコードLink
/を使用したパスを
表す文字列を返す
p.as_posix()Path('c:\\windows').as_posix()
>>> 'c/windows'
link
file URI で表したパスを返す。p.as_uri()Path('/etc/passwd').as_uri()
>>> 'file:///etc/passwd'
p.as_uri()
>>> ValueError: relative path can't be expressed as a file URI
link

ディレクトリ

意味pathlibサンプルコード
構成要素へのアクセスp.partsp.parts
>>> ('tests', 'python', 'pathlib.py')
ドライブを取得p.drivePath('c:/Program Files/').drive
>>> 'c:'
ルートを表す文字列を取得p.rootPath('/etc/passwd').root
>>> '/'
ドライブとルートを結合した
文字列を取得
p.anchorPath('c:/Program Files/').anchor
>>> 'c:\\'
Path('/etc/passwd').anchor
>>> '/'
p.anchor
>>> ''
親要素たちを取得p.parentsmap(str, p.parents)
>>> ['tests/python', 'tests', '.']
親(1 個上の階層の Path)を取得p.parentp.parent
>>> PosixPath('tests/python')

ファイル

意味pathlibサンプルコード
パス要素の末尾の文字列を取得p.namep.name
>>> 'pathlib.py'
Path('tests/fuga_dir/hoge_dir/').name
>>> 'hoge_dir'
ファイルの拡張子を取得p.suffixp.suffix
>>> '.py'
ファイルの拡張子のリストを取得p.suffixesPath(lib/mylib.tar.gz).suffixes
>>> ['.tar', '.gz']
p.nameから拡張子を除いたものを取得p.stemp.stem
>>> 'pathlib'

確認系

意味pathlibサンプルコードDoc
パスが絶対パスかどうかp.is_absolute()p.is_absolute()
>>> False
link
パスがotherに対して相対かどうかp.is_relative_to(*other)p.is_relative_to('tests')
>>> True
link
パスが Windows 上で
予約されてるかどうか
p.is_reserved()p.is_reserved()
>>> True False
link

Path

https://docs.python.org/ja/3/library/pathlib.html#methods

参考文献