やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

PythonでPathクラスを書いてみた

勉強。

成果物

github.com

経緯

なんかPythonのパスって面倒くさい。毎回os, os.path, pathlib`あたりのモジュールAPIをググっている気がする。

そこで、勉強がてら、まとめたクラスを書いてみた。C#APIを手本にして。

結論

勉強にはなった。演算子オーバーライドとか。

実用性はない。ほぼ単なるラッパ。やってみたら別にわざわざ書くまでもない。むしろ下手な独自クラスなんて無いほうが良いと実感した。絶対バグある。pathlib使うべき。

演算子オーバーライド

  • Path('/tmp/work/A/B/C/D.efg') << 3/tmp/work/Aみたいにできる
  • Path('/tmp/work/A/B/C/D.efg')[0]tmp, [1]work, のように取得できる(今思えば/がルートだった)

今見ると雑すぎて失笑。戻り値がテキストとPath型で統一性ゼロ。getできるのにsetできない。

あと、部分テキストの取得に関してはpathlib.PurePath.partsで実装されてた。(タプルなので値をセットできないが)

11.1. pathlib — オブジェクト指向のファイルシステムパス — Python 3.6.5 ドキュメント

ドキュメント読まずに何してるんだか……。