Pour Python 3.4 ou version ultérieure, vous devez simplement jeter os.path et utiliser pathlib

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.

Caractéristiques de pathlib

pathlib a les caractéristiques suivantes.

Orientation objet

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.

Intégration des fonctions d'opération de chemin de fichier

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')

Avantages de l'utilisation de pathlib

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). ** **

Pathlib est-il répandu?

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é.

Google Trend

https://trends.google.co.jp/trends/explore?date=today%205-y&q=python%20os.path,python%20pathlib

python_os_path__python_pathlib_-_調べる_-_Google_トレンド.png

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

QiiTrend.png

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

Pour Python 3.4 ou version ultérieure, vous devez simplement jeter os.path et utiliser pathlib
Jetez curl et utilisez httpie
[Python] Utiliser et et ou lors de la création de variables
Utilisez pathlib dans Maya (Python2.7) en préparation du prochain Python3.7
Vous devez savoir si vous utilisez Python! 10 bibliothèques utiles
% Et str.format () en Python. Lequel utilisez-vous?
Mettre à jour Raspberry Pi Python vers 3.7 ou version ultérieure avec pyenv
Faites agir Python pour vous, puis vos yeux et votre cerveau ...
Lequel dois-je étudier, R ou Python, pour l'analyse des données?