Pythonのpathlibが便利【os.pathの代替】

雑記

pathlibの機能について

ファイル名の取得 .name

from pathlib import Path # 以降、省略

target = "/path/to/filename.txt" # 以降、省略
p = Path(target) # 以降、省略

print(p.name) # filename.txt

ファイル名の拡張子を取得 .suffix

print(p.suffix) # .txt

ファイル名の拡張子以外を取得 .stem

print(p.stem) # filename

親ディレクトリを取得 .parent

print(p.parent) # /path/to

存在チェック .exists()

print(d.exists()) # True or False

ファイル(ディレクトリ)かどうか .is_file() .is_dir()

print(d.is_file()) # True or False
print(d.is_dir()) # True or False

パスの連結 .joinpath()

print(d.joinpath(f)) # /usr/bin/awk

# スラッシュ演算子でも可能
print(d / f) # /usr/bin/awk
# 引数は文字列でも可能
print(d.joinpath("awk")) # /usr/bin/awk

# 余分なパスの区切り文字は吸収される
dir = "/usr/bin/"
file = "/awk"
# /usr/bin//awkとはならない
print(d.joinpath(f)) # /usr/bin/awk 

解決 .resolve()

# /usr/bin/awk は /usr/bin/gawk へのシンボリックリンク
# $ type gawk
# gawk is /usr/bin/gawk

# 実体の取得
df = d.joinpath(f)
print(df.resolve()) # /usr/bin/gawk

# 相対パスから絶対パスへ
refp = (Path.home() / Path(r"../../")).joinpath("usr/bin/awk")
print(refp.resolve()) # /usr/bin/gawk

その他の操作

主にパス名に関するものを紹介しましたが、ファイルに対する操作を行うものもpathlibにはあります。以下は例ですが、詳しい使い方が気になる方は他の記事を参考にしてみてください。

  • ファイルを開く .open()
  • ファイルを文字列として読み込む .read_text()
  • ファイルに書き込む .write_text()
  • ファイルの作成 .touch()
  • ディレクトリの作成 .mkdir()
  • 名前の変更 .rename()

参考

コメント

タイトルとURLをコピーしました