pathlibとは
- ファイルやディレクトリを操作するPython標準パッケージ
- os.pathより高水準
- 連続して操作するときに可読性が上がる
- 末尾の / の有無を意識する必要がない
- 拡張子やファイル名の置き換えが簡単
- ワイルドカード検索が可能
pathlibとosモジュールの対応表
内容 | os | pathlib |
---|---|---|
シンボリックリンクを解決せずに絶対パス化 | os.path.abspath() | Path.absolute() |
シンボリックリンクを解決して絶対パス化 | os.path.realpath() | Path.resolve() |
ファイルのモードとアクセス権限を変更 | os.chmod() | Path.chmod() |
ディレクトリ作成 | os.mkdir() | Path.mkdir() |
再帰的にディレクトリ作成 | os.makedirs() | Path.mkdir() |
名前変更 | os.rename() | Path.rename() |
名前変更 | os.replace() | Path.replace() |
ディレクトリ削除 | os.rmdir() | Path.rmdir() |
ファイル削除 | os.remove(), os.unlink() | Path.unlink() |
現在の作業ディレクトリ | os.getcwd() | Path.cwd() |
ファイル、ディレクトリの存在確認 | os.path.exists() | Path.exists() |
ホームディレクトリの取得 | os.path.expanduser() | Path.expanduser() および Path.home() |
ディレクトリ内のパスを取得 | os.listdir() | Path.iterdir() |
ディレクトリ判定 | os.path.isdir() | Path.is_dir() |
ファイル判定 | os.path.isfile() | Path.is_file() |
シンボリックリンク判定 | os.path.islink() | Path.is_symlink() |
ハードリンクの作成 | os.link() | Path.hardlink_to() |
シンボリックリンクの作成 | os.symlink() | Path.symlink_to() |
シンボリックリンクが指すパスを取得 | os.readlink() | Path.readlink() |
指定パスから現在のパスへの相対パスを取得 | os.path.relpath() | PurePath.relative_to() |
ファイルまたはファイルディスクリプタの状態を取得 | os.stat() | Path.stat(), Path.owner(), Path.group() |
絶対パス判定 | os.path.isabs() | PurePath.is_absolute() |
パス結合 | os.path.join() | PurePath.joinpath() |
パス要素の末尾 | os.path.basename() | Purepath.name |
パスの論理的な上位パス | os.path.dirname() | PurePath.parent |
パス比較 | os.path.samefile() | Path.samefile() |
末尾の要素の拡張子の扱い | os.path.splitext() | PurePath.stem and PurePath.suffix |
演算子によるPathの結合
>>> from pathlib import Path
>>> path = Path("hoge") / "test" / "a.txt"
>>> print(path)
hoge/test/a.txt
シンボリックリンクを解決せずに絶対パス化
シンボリック | シンボリック先 |
---|---|
hoge | /Users/ikegami/Applications |
>>> import os
>>> os.path.abspath("hoge")
'/Users/ikegami/Desktop/hoge'
>>> from pathlib import Path
>>> Path("hoge").absolute()
PosixPath('/Users/ikegami/Desktop/hoge')
シンボリックリンクを解決して絶対パス化
シンボリック | シンボリック先 |
---|---|
hoge | /Users/ikegami/Applications |
>>> import os
>>> os.path.realpath("hoge")
'/Users/ikegami/Applications'
>>> from pathlib import Path
>>> Path("hoge").resolve()
PosixPath('/Users/ikegami/Applications')
ファイルのモードとアクセス権限を変更
実行前
ディレクトリ名 | 権限 |
---|---|
hoge | d-w--w--w- |
実行後
ディレクトリ名 | 権限 |
---|---|
hoge | drwxrwxrwx |
>>> import os
>>> os.chmod("hoge", 0o777)
>>> from pathlib import Path
>>> Path("hoge").chmod(0o777)