[PYTHON] pathlib L'utilisez-vous tous?

introduction

** pathlib ** L'utilisez vous? Si vous ne l'avez pas encore utilisé, veuillez l'utiliser une fois. Qu'est-ce que pathlib, c'est que vous pouvez manipuler les chemins. Je pense que tout le monde utilise ** os.path **, mais vous pouvez faire presque la même chose que os.path avec ** pathlib **. De plus, pathlib est un module Python standard.

Qui est la cible de cet article

Si vous êtes intéressé, veuillez le vérifier.

summary

pathlib

pathlib est un ** chemin de système de fichiers orienté objet **. Voyons comment l'utiliser.

constructeur

Vous pouvez créer un objet Path avec Path ()

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

Déterminer s'il s'agit d'un répertoire ou d'un fichier

Utilisez ʻis_dir () , ʻis_file ()

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

Rechercher des fichiers inexistants

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

Créer un fichier vide

Utilisez .touch ()

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

Obtenez une liste de fichiers directement sous le répertoire

Utilisez ʻiterdir () ʻouglob ()

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

Convertir tous les noms de fichiers en chaînes

Convertir en chaîne avec str

>>> [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']
>>> 

Obtenir uniquement le nom du fichier (fin du chemin)

Utilisez l'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']
>>> 

Obtenir le nom du fichier sans extension

Utilisez l'attribut stem

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

Obtenir l'extension de nom de fichier

Utilisez l'attribut shuffix

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

Créer un annuaire

Utilisez .mkdir ()

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

Créez ensemble des répertoires intermédiaires

Défini sur parents = True

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

Ne recevez pas d'erreur même si le répertoire existe

Définir ʻexist_ok = True`

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

Comment connecter les chemins

Concaténer avec / à l'objet Path Vous pouvez faire la même chose avec / que ʻos.path.join () `

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

Obtenir le répertoire parent

Utilisez parent

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

À la fin

Cette fois, je l'ai rédigé comme mémoire pour ne pas oublier ceux que j'utilise souvent. J'espère que ce sera utile autant que possible.

Les références

Recommended Posts

pathlib L'utilisez-vous tous?
À propos de l'environnement de développement que vous utilisez
Vérifiez le type de variable que vous utilisez
Qu'utilisez-vous lorsque vous testez avec Python?
Tu portes un masque? Développement de programme (avec Yolov5)
D'où êtes-vous
(Python3) Non oO (Utilisez-vous la bibliothèque standard?): 5 shaders
Vérifier si vous êtes un universitaire