Initial commit
This commit is contained in:
77
documentation/08-files-paths.md
Normal file
77
documentation/08-files-paths.md
Normal file
@ -0,0 +1,77 @@
|
||||
---
|
||||
title: Informations des répertoires et fichiers
|
||||
author: Steve Kossouho
|
||||
---
|
||||
|
||||
# Exploiter le système de fichiers
|
||||
|
||||
----
|
||||
|
||||
## Le package `pathlib`
|
||||
|
||||
Le module `pathlib` de Python 3.4+ (2014) offre des classes orientées objet pour manipuler les chemins de fichiers. Il s'agit
|
||||
d'une interface moderne orientée objet pour compléter ou remplacer ce qui se faisait avec le module `os.path`.
|
||||
|
||||
----
|
||||
|
||||
### Les objets `pathlib.Path`
|
||||
|
||||
L'objet `Path` du module `pathlib` représente un chemin de fichier général et offre des méthodes et des propriétés
|
||||
pour effectuer diverses opérations sur ledit chemin.
|
||||
|
||||
```python {.numberLines}
|
||||
from pathlib import Path
|
||||
|
||||
# Créer un objet Path
|
||||
p = Path('/chemin/vers/fichier')
|
||||
```
|
||||
|
||||
Créer un chemin. _Le chemin peut ou non exister réellement sur le système local, la seule contrainte étant qu'il soit
|
||||
valide par rapport à la norme POSIX (et Windows)_.
|
||||
|
||||
----
|
||||
|
||||
### Méthodes utiles des objets `pathlib.Path`
|
||||
|
||||
Les objets `Path` ont plusieurs méthodes utiles pour gérer un chemin de fichier ou de répertoire. Parmi les outils
|
||||
qui renvoient les informations les plus simples :
|
||||
|
||||
```python {.numberLines}
|
||||
from pathlib import Path
|
||||
|
||||
# Imaginons que bob est un répertoire
|
||||
f = Path("/home/bob")
|
||||
# Vérifier si un chemin existe
|
||||
print(f"Le chemin existe : {f.exists()}")
|
||||
|
||||
# Générer un objet Path qui est un répertoire enfant de bob
|
||||
f2 = f / "morane"
|
||||
# M'affiche "/home/bob/morane"
|
||||
print(f2)
|
||||
|
||||
# Vérifier si un chemin est un répertoire
|
||||
if p.is_dir():
|
||||
print("C'est un répertoire.")
|
||||
|
||||
# Vérifier si un chemin est un fichier
|
||||
if p.is_file():
|
||||
print("C'est un fichier.")
|
||||
```
|
||||
|
||||
----
|
||||
|
||||
### Parcourir récursivement des fichiers avec `pathlib.Path`
|
||||
|
||||
La méthode `rglob()` des objets `Path` peut être utilisée pour parcourir récursivement des fichiers.
|
||||
|
||||
```python {.numberLines}
|
||||
from pathlib import Path
|
||||
|
||||
# Parcourir récursivement tous les fichiers .txt
|
||||
for fichier in Path('/chemin/vers/répertoire').rglob('*.txt'):
|
||||
print(fichier)
|
||||
|
||||
# Parcourir tous les fichiers .txt du répertoire, sans récursion
|
||||
for fichier in Path('/chemin/vers/répertoire').glob('*.txt'):
|
||||
print(fichier)
|
||||
```
|
Reference in New Issue
Block a user