LoginSignup
4
3

More than 3 years have passed since last update.

pathlib.Pathのちょっと便利な使い方

Posted at

なにこれ

  • pathlibのちょっと便利な使い方、書けるけどあまり見ない書き方
  • "/"で繋げられるとか、os.pathとの対応表ではないです

argparseと組み合わせる

  • pathに関する引数をPath(args.path)としてラップし直すのを回避できる
  • clickでも同じく。
argparse+pathlib
import argparse
from pathlib import Path

parser = argparse.ArgumentParser()
parser.add_argument("hoge", type=Path)
args = parser.parse_args()
print(args.hoge)
# PosixPath("hoge")

Pathオブジェクト作成と同時にmkdirも済ませる

  • pathを与えたときに、pathに関する処理をまとめて担うclassを作成する
Path+mkdir
from pathlib import Path

class HogeHuga(type(Path()):
    def __init__(self, path):
        self.mkdir()
        self.huga = self/"huga"
        self.huga.mkdir()

hoge = HogeHuga("hoge")
print(hoge)
# PosixPath("hoge")
print(hoge.huga)
# PosixPath("hoge/huga")
print(hoge.huga.exists())
# True

Pathの指定をos.path.join的に行う

  • Pathの引数を複数与える
os.path.joinっぽい
from pathlib import Path

path = Path("hoge", "huga")
print(path)
# PosixPath("hoge/huga")

path = Path("hoge")/"huga"
# こちらのほうが短い

hogehuga = ["hoge", "huga"]
path = Path(*hogehuga)
# リストにディレクトリ構造を保持しているならこちらのほうがいいかも

with open(path)をスマートにしたい

Path.open()
from pathlib import Path

path = Path("hoge")
with path.open(mode="r") as f:
   huga = f.read()

読み書きをもっとスマートにしたい

  • いちいちopenを書きたくない
Path.read_text
from pathlib import Path

path = Path("hoge")
path.write_text("huga")
txt = path.read_text()
print(txt)
# huga
4
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
4
3