pathlibのススメ

2.4K Views

November 07, 22

スライド概要

Pythonの標準ライブラリpathlibについてosとの違い、どういうモジュールなのか解説したスライドです

profile-image

勉強中・興味のあるもの: Python / React / DDD / TDD

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

pathlibのススメ osやPurePath/Pathの違いについて Yumihiki

2.

はじめに はじめに 自己紹介 LTの内容について(何を得てもらうことができるか) pathlibとは? おわりに

3.

自己紹介 Yumihiki / Tatsuya NIBUNO パーソルテクノロジースタッフ(株) 関西G 2020年2月〜実務未経験から転職 エセ関西人

4.

LTの内容について(何を得てもらうことができるか) ● pathlibの概要と使い方 ○ osとの違い ● pathlibのことを知らなかった方には学びがある話󰢛 ○ 知っている人はちょっと退屈かも・・・

5.

pathlibとは? ● ファイルシステムパスを表すクラスを提供している ● Python3.4から追加された標準ライブラリ ● PEP428で提案・採用された様子 (元々はサードパーティモジュールだった)

6.

pathlibとは? パス操作が出来るモジュールで 標準ライブラリにos(os.path)が あるけど何がちゃうん?

7.

pathlibとは? ● osより使いやすい・分かりやすい(個人の意見) ● os.pathは文字列操作 ● pathlibは高水準のパスオブジェクト と言われている

8.

pathlibとは? お、おう・・・(これだけじゃよー分からん) なのでもうちょっと説明していきます

9.

pathlibとは? ● pathlibには6つのクラスが存在する ● PurePath / PurePosixPath / PureWindowsPath ● Path / PosixPath / WindowsPath

10.

pathlibとは? PurePath PureWindowsPath PurePosixPath Path PosixPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより

11.

pathlibとは? PurePath PureWindowsPath PurePosixPath Path PosixPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより

12.

pathlibとは? PurePath Pathで全てカバー できるのでPathを 使用すればOK PureWindowsPath PurePosixPath Path PosixPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより

13.

pathlibとは? ● 純粋パス(以降、PurePath) ● I/O を伴わない純粋な計算操作を提供する = ファイルシステムのパス取得 ● 3つのアクセス方法がある(通称flavours)

14.

pathlibとは? PurePath PureWindowsPath PurePosixPath Path PosixPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより

15.

pathlibとは? ● PurePathは実行時にPosixかWindowsか判定して PurePosixPath / PureWindowsPath を返してくれる ● そのため3つクラスがあるが、 基本的にはPurePathを用いれば良い

16.

pathlibとは? ● 具象パス(以降、Path) ● PurePathを継承し I/O 操作も提供する = システムコール(OS操作)を行う ● PurePathと同じく3つのアクセス方法がある

17.

pathlibとは? PurePath PureWindowsPath PurePosixPath Path PosixPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより

18.

pathlibとは? ● Path / PosixPath / WindowsPath の3つが存在する ● 使用者としてはPathを利用すれば良い ○ PurePath同様、環境を判定してくれるので

19.

pathlibとは? ● そしてpathlib全体の話としては PurePath / Path で区別せず 基本的にはPathを用いれば良い ○ PathはPurePathのサブクラスなので

20.

pathlibとは? 前置きが長くなったけど 語るよりコードを見てもらった方が良いですよね😆

21.

pathlibとは? 🔴🟠🟢 実行環境 macOS Big Sur バージョン 11.6.4 Python3.10.5 ターミナル を使用(pythonコマンドで対話環境を呼出)

22.

pathlibとは? 🔴🟠🟢 >>> from pathlib import Path >>> p = Path("/Users/yumihiki/module_pathlib.py") >>> p PosixPath('/Users/yumihiki/module_pathlib.py') # 利用環境がMacなので、PosixPathになっていることがわかる

23.

pathlibとは? 🔴🟠🟢 >>> p.name 'module_pathlib.py' >>> p.stem 'module_pathlib' >>> p.suffix '.py'

24.

pathlibとは? 一方、os.pathモジュールを利用した場合・・・ (import os した前提で以降記述)

25.

pathlibとは? 🔴🟠🟢 >>> os.path.basename("/Users/yumihiki/module_pathlib.py") 'module_pathlib.py' >>> os.path.splitext( os.path.split("/Users/yumihiki/module_pathlib.py")[1] )[0] 'module_pathlib' >>> os.path.splitext("/Users/yumihiki/module_pathlib.py")[1] '.py'

26.

pathlibとは? ちょっと可読性に欠ける気がする😔

27.

pathlibとは? そのほかPathでIO操作をしてみる😎

28.

pathlibとは? 🔴🟠🟢 >>> p0 = Path("/Users/yumihiki/study") >>> p0.mkdir() # ディレクトリ作成 >>> p1 = Path("/Users/yumihiki/study/pathlib_study.py") >>> p1.touch() # ファイル作成 >>> p1.unlink() # ファイル削除

29.

pathlibとは? osの場合・・・ (正確にはファイルの作成はosは用いられない)

30.

pathlibとは? 🔴🟠🟢 >>> os.mkdir("/Users/yumihiki/study") >>> with open("/Users/yumihiki/study/pathlib_study.py") as f: ... f.write("") … 0 >>> os.remove("/Users/yumihiki/study/pathlib_study.py")

31.

pathlibとは? ファイル名取得の時と比べるとまだ分かりやすいけど それでもpathlibの方がより分かりやすい・使いやすそう!

32.

pathlibとは? 公式リファレンスに os と pathlib の対応表がある! 「これどうしたら良い?」っていう時に便利です!

33.

おわりに 個人的にはos.pathよりも直感的に分かりやすく 使えるところが好きです😻

34.

おわりに PathをimportしたのにPurePathも利用していたなと ソースを思い出しました・・・😱

35.

おわりに Python2系から移行されたソースを参考にして pathlibを使えるけど使っていなかった・・・という ケースもあると思うのでぜひ活用してみてください!

36.

おわりに ご静聴ありがとうございました!