[PYTHON] pathlib Benutzt du es alle?

Einführung

** pathlib ** Benutzt du es? Wenn Sie es noch nicht benutzt haben, benutzen Sie es bitte einmal. Was pathlib ist, ist, dass Sie Pfade manipulieren können. Ich denke, jeder benutzt ** os.path **, aber Sie können mit ** pathlib ** fast das Gleiche tun wie dieser os.path. Darüber hinaus ist pathlib ein Standard-Python-Modul.

Wer ist das Ziel dieses Artikels?

Wenn Sie interessiert sind, überprüfen Sie es bitte.

summary

pathlib

pathlib ist ein ** objektorientierter Dateisystempfad **. Mal sehen, wie man es benutzt.

Konstrukteur

Sie können ein Path-Objekt mit Path () erstellen

>>> from pathlib import Path
>>> Path()
PosixPath('.')
>>> Path('data')
PosixPath('data')
>>> 
>>> Path('data/image_0001.jpg')
PosixPath('data/image_0001.jpg')
>>> 

Feststellen, ob es sich um ein Verzeichnis oder eine Datei handelt

Verwenden Sie "is_dir ()", "is_file ()"

>>> a = Path('data')
>>> a.is_dir()
True
>>> b = Path('data/image_0001.jpg')
>>> b.is_file()
True
>>> 

Suchen Sie nach nicht vorhandenen Dateien

>>> p = Path('data/img0.jpg')
>>> p.exists()
False

Leere Datei erstellen

Verwenden Sie .touch ()

>>> p = Path('data/img0.jpg')
>>> p.exists()
False
>>> p.touch()
>>> p.exists()
True

Holen Sie sich eine Liste der Dateien direkt unter dem Verzeichnis

Verwenden Sie "iterdir ()" oder "glob ()"

>>> a = Path('data')
>>> list(a.iterdir())
[PosixPath('data/img0.jpg'), 
PosixPath('data/image_0004.jpg'),
PosixPath('data/image_0005.jpg'), 
PosixPath('data/image_0001.jpg'), 
PosixPath('data/image_0002.jpg'), 
PosixPath('data/image_0003.jpg')]
>>> 


>>> list(a.glob('*'))
[PosixPath('data/img0.jpg'), 
PosixPath('data/image_0004.jpg'), 
PosixPath('data/image_0005.jpg'), 
PosixPath('data/image_0001.jpg'), 
PosixPath('data/image_0002.jpg'), 
PosixPath('data/image_0003.jpg')]
>>> 

Konvertieren Sie alle Dateinamen in Zeichenfolgen

Mit str in einen String konvertieren

>>> [str(p) for p in a.iterdir()]
['data/img0.jpg', 
'data/image_0004.jpg', 
'data/image_0005.jpg', 
'data/image_0001.jpg', 
'data/image_0002.jpg', 
'data/image_0003.jpg']
>>> 

Nur Dateinamen abrufen (Ende des Pfads)

Verwenden Sie das Attribut name

>>> [p.name for p in a.iterdir() if p.is_file()]
['img0.jpg', 
'image_0004.jpg', 
'image_0005.jpg', 
'image_0001.jpg', 
'image_0002.jpg', 
'image_0003.jpg']
>>> 

Dateinamen ohne Erweiterung abrufen

Verwenden Sie das Attribut "stem"

>>> [p.stem for p in a.iterdir() if p.is_file()]
['img0', 
'image_0004', 
'image_0005', 
'image_0001', 
'image_0002', 
'image_0003']
>>> 

Dateinamenerweiterung abrufen

Verwenden Sie das Attribut "shuffix"

>>> [p.suffix for p in a.iterdir() if p.is_file()]
['.jpg', '.jpg', '.jpg', '.jpg', '.jpg', '.jpg']
>>> 

Ein Verzeichnis erstellen

Verwenden Sie .mkdir ()

>>> c = Path('test')
>>> c.exists()
False
>>> c.mkdir()
>>> c.exists()
True
>>> 

Erstellen Sie gemeinsam Zwischenverzeichnisse

Auf parent = True setzen

>>> Path('test/data/001').mkdir(parents=True)

Erhalten Sie keine Fehlermeldung, auch wenn das Verzeichnis vorhanden ist

Setze exist_ok = True

>>> Path('test/data').mkdir(exist_ok=True)

So verbinden Sie Pfade

Verketten Sie mit / zum Path-Objekt Sie können dasselbe mit os.path.join () mit / tun

>>> d = Path('data')
>>> d / 'train' / '001'
PosixPath('data/train/001')

Übergeordnetes Verzeichnis abrufen

Verwenden Sie "Eltern"

>>> b
PosixPath('data/image_0001.jpg')
>>> b.parent
PosixPath('data')

Am Ende

Dieses Mal habe ich es als mein Memorandum geschrieben, damit ich die, die ich oft benutze, nicht vergesse. Ich hoffe es wird so hilfreich wie möglich sein.

Verweise

Recommended Posts

pathlib Benutzt du es alle?
Informationen zu der von Ihnen verwendeten Entwicklungsumgebung
Überprüfen Sie den Typ der von Ihnen verwendeten Variablen
Was verwenden Sie beim Testen mit Python?
Trägst du eine Maske? Programmentwicklung (mit Yolov5)
Wo kommen Sie her
(Python3) Nein. OO (Verwenden Sie die Standardbibliothek?): 5 Shader
Überprüfen Sie, ob Sie ein Gelehrter sind