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
39
pathlibのススメ
Pythonの標準ライブラリのpathlibについて解説したスライドです。
osモジュールとは何が違うのか、どう便利なのかちょっと解説したスライドになります。
Yumihiki
November 07, 2022
Tweet
Share
More Decks by Yumihiki
See All by Yumihiki
ノリと勢いで勉強会を共同主催しはじめた話
nibuno
1
280
LTってなんなん?
nibuno
0
94
【初心者向け】ググらずに!? ターミナル上で Pythonオブジェクトを調べよう
nibuno
0
450
勇気出してアウトプットしたらコメントをもらえて自分の理解が深まった良い話🤩
nibuno
0
160
テスト駆動開発のススメ
nibuno
2
20k
目標を決めるにあたって 新年の抱負 超LT会- vol.2
nibuno
0
350
パーフェクトPHPのススメ
nibuno
1
940
Other Decks in Programming
See All in Programming
WebGLで始める コンピュータグラフィックス入門
heller77
0
390
Try creating your own orderedmap
kazamori
1
290
RaaP
ksss
0
160
WinActorの勉強を継続する方法
tamai_63
0
130
『WordPressコミュニティで学ぶ』OSS貢献の多様性
ippey
0
270
Escolhendo (ou não) o melhor ORM para o seu projeto
andreiacsilva
1
160
戦略的DDDは重いのか? / Is strategic DDD heavy?
pictiny
3
2.1k
Namespace, What and Why
tagomoris
3
700
JavaScript Closure
asoluka
0
2k
The Design of Everyday APIs - PyCon 2024
roguelynn
1
210
Productivity is Messing Around and Having Fun
hollycummins
1
180
Enjoy Creative Coding with Ruby (RubyKaigi2024)
chobishiba
0
770
Featured
See All Featured
Optimising Largest Contentful Paint
csswizardry
13
2.4k
The Cost Of JavaScript in 2023
addyosmani
21
4k
Writing Fast Ruby
sferik
622
60k
Fireside Chat
paigeccino
22
2.7k
GitHub's CSS Performance
jonrohan
1025
450k
Making the Leap to Tech Lead
cromwellryan
125
8.6k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
275
13k
Building Effective Engineering Teams - LeadDev
addyosmani
33
1.9k
The Brand Is Dead. Long Live the Brand.
mthomps
49
30k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
20
1.8k
Design by the Numbers
sachag
274
18k
Documentation Writing (for coders)
carmenintech
60
4k
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を使えるけど使っていなかった・・・という ケースもあると思うのでぜひ活用してみてください!
おわりに ご静聴ありがとうございました!