Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
pathlibのススメ
Search
Yumihiki
November 07, 2022
Programming
0
50
pathlibのススメ
Pythonの標準ライブラリのpathlibについて解説したスライドです。
osモジュールとは何が違うのか、どう便利なのかちょっと解説したスライドになります。
Yumihiki
November 07, 2022
Tweet
Share
More Decks by Yumihiki
See All by Yumihiki
ノリと勢いで勉強会を共同主催しはじめた話
nibuno
1
390
LTってなんなん?
nibuno
0
140
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
nibuno
0
500
勇気出してアウトプットしたらコメントをもらえて自分の理解が深まった良い話🤩
nibuno
0
190
テスト駆動開発のススメ
nibuno
2
21k
目標を決めるにあたって 新年の抱負 超LT会- vol.2
nibuno
0
380
パーフェクトPHPのススメ
nibuno
1
1.1k
Other Decks in Programming
See All in Programming
Cloudflare Realtime と Workers でつくるサーバーレス WebRTC
nekoya3
0
330
TypeScript Language Service Plugin で CSS Modules の開発体験を改善する
mizdra
PRO
3
2.9k
20250528 AWS Startupイベント登壇資料:AIコーディングの取り組み
procrustes5
0
120
2度もゼロから書き直して、やっとブラウザでぬるぬる動くAIに辿り着いた話
tomoino
0
120
プロダクト改善のために新しいことを始める -useContextからの卒業、Zustandへ-
rebase_engineering
1
100
実践ArchUnit ~実例による検証パターンの紹介~
ogiwarat
1
150
💎 My RubyKaigi Effect in 2025: Top Ruby Companies 🌐
yasulab
PRO
1
130
Javaのルールをねじ曲げろ!禁断の操作とその代償から学ぶメタプログラミング入門 / A Guide to Metaprogramming: Lessons from Forbidden Techniques and Their Price
nrslib
2
1.7k
"使いづらい" をリバースエンジニアリングする UI の読み解き方
rebase_engineering
0
120
RubyKaigiで得られる10の価値 〜Ruby話を聞くことだけが RubyKaigiじゃない〜
tomohiko9090
0
110
カクヨムAndroidアプリのリブート
numeroanddev
0
130
Parallel::Pipesの紹介
skaji
2
890
Featured
See All Featured
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
106
19k
Scaling GitHub
holman
459
140k
Into the Great Unknown - MozCon
thekraken
39
1.8k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
657
60k
Bash Introduction
62gerente
614
210k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
31
1.2k
Facilitating Awesome Meetings
lara
54
6.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.4k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Measuring & Analyzing Core Web Vitals
bluesmoon
7
470
Transcript
Yumihiki pathlibのススメ osやPurePath/Pathの違いについて
はじめに はじめに 自己紹介 LTの内容について(何を得てもらうことができるか) pathlibとは? おわりに
自己紹介 Yumihiki / Tatsuya NIBUNO パーソルテクノロジースタッフ(株) 関西G 2020年2月〜実務未経験から転職 エセ関西人
LTの内容について(何を得てもらうことができるか) • pathlibの概要と使い方 ◦ osとの違い • pathlibのことを知らなかった方には学びがある話 ◦ 知っている人はちょっと退屈かも・・・
pathlibとは? • ファイルシステムパスを表すクラスを提供している • Python3.4から追加された標準ライブラリ • PEP428で提案・採用された様子 (元々はサードパーティモジュールだった)
pathlibとは? パス操作が出来るモジュールで 標準ライブラリにos(os.path)が あるけど何がちゃうん?
pathlibとは? • osより使いやすい・分かりやすい(個人の意見) • os.pathは文字列操作 • pathlibは高水準のパスオブジェクト と言われている
pathlibとは? お、おう・・・(これだけじゃよー分からん) なのでもうちょっと説明していきます
pathlibとは? • pathlibには6つのクラスが存在する • PurePath / PurePosixPath / PureWindowsPath •
Path / PosixPath / WindowsPath
pathlibとは? Path PosixPath PurePath PurePosixPath PureWindowsPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより
pathlibとは? Path PosixPath PurePath PurePosixPath PureWindowsPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより
pathlibとは? Path PosixPath PurePath PurePosixPath PureWindowsPath WindowsPath Pathで全てカバー できるのでPathを 使用すればOK
https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより
pathlibとは? • 純粋パス(以降、PurePath) • I/O を伴わない純粋な計算操作を提供する = ファイルシステムのパス取得 •
3つのアクセス方法がある(通称flavours)
pathlibとは? Path PosixPath PurePath PurePosixPath PureWindowsPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより
• PurePathは実行時にPosixかWindowsか判定して PurePosixPath / PureWindowsPath を返してくれる • そのため3つクラスがあるが、 基本的にはPurePathを用いれば良い pathlibとは?
pathlibとは? • 具象パス(以降、Path) • PurePathを継承し I/O 操作も提供する = システムコール(OS操作)を行う •
PurePathと同じく3つのアクセス方法がある
pathlibとは? Path PosixPath PurePath PurePosixPath PureWindowsPath WindowsPath https://docs.python.org/ja/3/library/pathlib.html#module-pathlib のイラストより
pathlibとは? • Path / PosixPath / WindowsPath の3つが存在する • 使用者としてはPathを利用すれば良い
◦ PurePath同様、環境を判定してくれるので
pathlibとは? • そしてpathlib全体の話としては PurePath / Path で区別せず 基本的にはPathを用いれば良い ◦ PathはPurePathのサブクラスなので
pathlibとは? 前置きが長くなったけど 語るよりコードを見てもらった方が良いですよね😆
pathlibとは? 実行環境 macOS Big Sur バージョン 11.6.4 Python3.10.5 ターミナル
を使用(pythonコマンドで対話環境を呼出) 🔴 🟠 🟢
pathlibとは? >>> from pathlib import Path >>> p = Path("/Users/yumihiki/module_pathlib.py")
>>> p PosixPath('/Users/yumihiki/module_pathlib.py') # 利用環境がMacなので、PosixPathになっていることがわかる 🔴 🟠 🟢
pathlibとは? >>> p.name 'module_pathlib.py' >>> p.stem 'module_pathlib' >>>
p.suffix '.py' 🔴 🟠 🟢
pathlibとは? 一方、os.pathモジュールを利用した場合・・・ (import os した前提で以降記述)
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' 🔴 🟠 🟢
pathlibとは? ちょっと可読性に欠ける気がする😔
pathlibとは? そのほかPathでIO操作をしてみる😎
pathlibとは? >>> p0 = Path("/Users/yumihiki/study") >>> p0.mkdir() # ディレクトリ作成
>>> p1 = Path("/Users/yumihiki/study/pathlib_study.py") >>> p1.touch() # ファイル作成 >>> p1.unlink() # ファイル削除 🔴 🟠 🟢
pathlibとは? osの場合・・・ (正確にはファイルの作成はosは用いられない)
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") 🔴 🟠 🟢
pathlibとは? ファイル名取得の時と比べるとまだ分かりやすいけど それでもpathlibの方がより分かりやすい・使いやすそう!
pathlibとは? 公式リファレンスに os と pathlib の対応表がある! 「これどうしたら良い?」っていう時に便利です!
おわりに 個人的にはos.pathよりも直感的に分かりやすく 使えるところが好きです😻
おわりに PathをimportしたのにPurePathも利用していたなと ソースを思い出しました・・・😱
おわりに Python2系から移行されたソースを参考にして pathlibを使えるけど使っていなかった・・・という ケースもあると思うのでぜひ活用してみてください!
おわりに ご静聴ありがとうございました!