0
3

[Python] pathlibとosモジュールの対応

Last updated at Posted at 2023-10-07

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)

参考

0
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
3