Pathlib a été ajouté en tant que module pour effectuer des opérations de chemin de fichier dans Python 3.4.
Jusqu'à présent, les opérations de chemin de fichier utilisaient os.path et glob, mais l'utilisation de pathlib rend le fonctionnement continu des chemins de fichier très facile à écrire, vous devez donc l'utiliser activement.
pathlib a les caractéristiques suivantes.
Dans os.path etc. que j'utilisais jusqu'à présent, la fonction était fournie par une fonction indépendante.
D'autre part, pathlib fournit des fonctions comme méthodes et propriétés de la classe Path.
pathlib
>>> from pathlib import Path
>>> Path('/a/b/c.txt').parent
PosixPath('/a/b')
>>> Path('/a/b/c.txt').parents[1]
PosixPath('/a')
>>> Path('/a/b').joinpath('c/d')
PosixPath('/a/b/c/d')
>>> Path('/a/b') / 'c/d'
PosixPath('/a/b/c/d')
La valeur de retour est également un objet Path au lieu de str.
Jusqu'à présent, les fonctions des opérations de chemin de fichier étaient distribuées non seulement à os.path mais aussi à plusieurs modules tels que os, glob et la fonction intégrée open, mais dans pathlib, la plupart d'entre eux sont distribués. Les fonctionnalités sont intégrées.
pathlib glob
Path('.').glob('*')
pathlib ouvert
Path('a.txt').open('w')
De plus, dans Python 3.6 et versions ultérieures, certains des modules utilisés jusqu'à présent ont été modifiés afin qu'ils puissent recevoir non seulement des objets str mais aussi Path comme arguments.
Fonction intégrée ouverte()Passer un objet Path à
open(Path('a.txt'), 'w')
Avec l'explication jusqu'à présent, certaines personnes peuvent penser: "N'est-ce pas juste plus de travail pour créer une instance?"
Cependant, ** pathlib est le plus utile lors de l'exécution d'opérations de chemin continues. ** **
À titre d'exemple, comparons le processus de vérification si un fichier appelé hoge.txt
existe dans le répertoire parent du répertoire où un certain fichier est stocké.
Tout d'abord, lors de l'utilisation de os.path.
os.path
>>> os.path.exists(os.path.join(os.path.dirname(os.path.dirname('/a/b/c.txt')), 'hoge.txt'))
False
Les appels de fonction sont imbriqués et à première vue, vous ne pouvez pas comprendre immédiatement ce que vous faites.
Vient ensuite le cas de l'utilisation de pathlib.
pathlib partie 1
>>> Path('/a/b/c.txt').parent.parent.joinpath('hoge.txt').exists()
False
pathlib partie 2
>>> (Path('/a/b/c.txt').parents[1] / 'hoge.txt').exists()
False
Il peut être lu naturellement de gauche à droite, ce qui le rend très facile à comprendre.
Comme vous pouvez le voir, ** pathlib rend les opérations de chemin en continu très faciles à lire (écrire). ** **
Je n'ai pas encore utilisé pathlib dans la pratique, et je n'ai pas vu le code utilisé.
J'ai essayé de savoir à quel point il est réellement utilisé.
https://trends.google.co.jp/trends/explore?date=today%205-y&q=python%20os.path,python%20pathlib
Le nombre de recherches augmente, mais pas encore autant que os.path.
GitHub
Je n'ai pas pu rechercher la date avec Code, alors vérifiez-la avec Issue.
Année | os.path | pathlib |
---|---|---|
2014 | 293 | 77 |
2015 | 897 | 181 |
2016 | 826 | 342 |
2017 | 463 | 448 |
Pathlib augmente régulièrement et il semble que os.path sera dépassé cette année.
Qiita
Vérifiez-le avec [Qii Trend].
https://qiitrend.herokuapp.com/trend?mode=count&period=4&query=tag%3Apython+os.path&query=tag%3Apython+pathlib&unit=yearly
Dans l'article de Qiita, pathlib est presque inutilisé.
À en juger par les résultats de GitHub et Qiita, cela signifie-t-il que la diffusion n'est retardée qu'au Japon?
Recommended Posts