Pathlib wurde als Modul zum Ausführen von Dateipfadoperationen in Python 3.4 hinzugefügt.
Bisher wurden für Dateipfadoperationen os.path und glob verwendet. Durch die Verwendung von pathlib ist der kontinuierliche Betrieb von Dateipfaden jedoch sehr einfach zu schreiben. Sie sollten ihn daher aktiv verwenden.
pathlib hat die folgenden Funktionen.
In os.path usw., die ich bisher verwendet habe, wurde die Funktion von einer unabhängigen Funktion bereitgestellt.
Andererseits bietet pathlib Funktionen als Methoden und Eigenschaften der Path-Klasse.
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')
Der Rückgabewert ist auch ein [Pfad] -Objekt anstelle von str.
Bisher wurden die Funktionen von Dateipfadoperationen nicht nur auf os.path, sondern auch auf mehrere Module wie os, glob und die integrierte Funktion open verteilt, aber in pathlib sind die meisten von ihnen verteilt. Funktionen sind integriert.
pathlib glob
Path('.').glob('*')
pathlib offen
Path('a.txt').open('w')
In Python 3.6 und höher wurden einige der bisher verwendeten Module so geändert, dass sie nicht nur str-, sondern auch Path -Objekte als Argumente empfangen können.
Eingebaute Funktion offen()Übergeben Sie ein Pfadobjekt an
open(Path('a.txt'), 'w')
Mit der bisherigen Erklärung mögen sich einige Leute fragen: "Ist es nicht einfach mehr Arbeit, eine Instanz zu erstellen?"
** pathlib ist jedoch am nützlichsten, wenn kontinuierliche Pfadoperationen ausgeführt werden. ** ** **
Vergleichen wir als Beispiel den Prozess der Überprüfung, ob eine Datei mit dem Namen "hoge.txt" im übergeordneten Verzeichnis des Verzeichnisses vorhanden ist, in dem eine bestimmte Datei gespeichert ist.
Erstens, wenn Sie os.path verwenden.
os.path
>>> os.path.exists(os.path.join(os.path.dirname(os.path.dirname('/a/b/c.txt')), 'hoge.txt'))
False
Funktionsaufrufe sind verschachtelt und auf den ersten Blick können Sie nicht sofort verstehen, was Sie tun.
Als nächstes wird pathlib verwendet.
pathlib teil 1
>>> Path('/a/b/c.txt').parent.parent.joinpath('hoge.txt').exists()
False
pathlib teil 2
>>> (Path('/a/b/c.txt').parents[1] / 'hoge.txt').exists()
False
Es kann natürlich von links nach rechts gelesen werden, was es sehr leicht verständlich macht.
Wie Sie sehen können, macht ** pathlib kontinuierliche Pfadoperationen sehr einfach zu lesen (schreiben). ** ** **
Ich habe pathlib in der Praxis noch nicht verwendet und den verwendeten Code nicht gesehen.
Ich habe versucht herauszufinden, wie viel es tatsächlich verwendet wird.
https://trends.google.co.jp/trends/explore?date=today%205-y&q=python%20os.path,python%20pathlib
Die Anzahl der Suchanfragen nimmt zu, jedoch noch nicht so stark wie bei os.path.
GitHub
Ich konnte das Datum nicht mit Code suchen, überprüfen Sie es daher mit Problem.
Jahr | os.path | pathlib |
---|---|---|
2014 | 293 | 77 |
2015 | 897 | 181 |
2016 | 826 | 342 |
2017 | 463 | 448 |
Pathlib nimmt stetig zu und es scheint, dass os.path in diesem Jahr überholt wird.
Qiita
Überprüfen Sie es mit [Qii Trend].
https://qiitrend.herokuapp.com/trend?mode=count&period=4&query=tag%3Apython+os.path&query=tag%3Apython+pathlib&unit=yearly
In Qiitas Artikel wird Pathlib fast nicht verwendet.
Bedeutet dies nach den Ergebnissen von GitHub und Qiita, dass sich die Verbreitung nur in Japan verzögert?
Recommended Posts