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
57
pathlibのススメ
Pythonの標準ライブラリのpathlibについて解説したスライドです。
osモジュールとは何が違うのか、どう便利なのかちょっと解説したスライドになります。
Yumihiki
November 07, 2022
Tweet
Share
More Decks by Yumihiki
See All by Yumihiki
ノリと勢いで勉強会を共同主催しはじめた話
nibuno
1
420
LTってなんなん?
nibuno
0
150
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
nibuno
0
510
勇気出してアウトプットしたらコメントをもらえて自分の理解が深まった良い話🤩
nibuno
0
200
テスト駆動開発のススメ
nibuno
2
21k
目標を決めるにあたって 新年の抱負 超LT会- vol.2
nibuno
0
390
パーフェクトPHPのススメ
nibuno
1
1.1k
Other Decks in Programming
See All in Programming
AIエージェント時代における TypeScriptスキーマ駆動開発の新たな役割
bicstone
4
1.5k
Web技術を最大限活用してRAW画像を現像する / Developing RAW Images on the Web
ssssota
2
1.2k
After go func(): Goroutines Through a Beginner’s Eye
97vaibhav
0
230
プロダクト開発をAI 1stに変革する〜SaaS is dead時代で生き残るために〜 / AI 1st Product Development
kobakei
0
490
なぜGoのジェネリクスはこの形なのか? Featherweight Goが明かす設計の核心
ryotaros
7
1k
Go言語の特性を活かした公式MCP SDKの設計
hond0413
1
180
Swift Concurrency - 状態監視の罠
objectiveaudio
2
460
詳しくない分野でのVibe Codingで困ったことと学び/vibe-coding-in-unfamiliar-area
shibayu36
3
4.4k
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
140
XP, Testing and ninja testing ZOZ5
m_seki
3
310
ててべんす独演会〜Flowの全てを語ります〜
tbsten
1
220
NetworkXとGNNで学ぶグラフデータ分析入門〜複雑な関係性を解き明かすPythonの力〜
mhrtech
3
1k
Featured
See All Featured
Statistics for Hackers
jakevdp
799
220k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
The Straight Up "How To Draw Better" Workshop
denniskardys
237
140k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
33
2.5k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Building Applications with DynamoDB
mza
96
6.6k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Automating Front-end Workflow
addyosmani
1371
200k
Balancing Empowerment & Direction
lara
4
680
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
36
2.5k
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を使えるけど使っていなかった・・・という ケースもあると思うのでぜひ活用してみてください!
おわりに ご静聴ありがとうございました!