なにこれ
- 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