Obtenir des informations sur un fichier avec pathlib.Path.stat() en Python

1. À propos de Path.stat()

Le module pathlib permet de manipuler les fichiers, les dossiers et leurs chemins avec une approche orientée objet. La méthode Path.stat() permet d'obtenir différentes informations fournies par le système de fichiers sur un fichier ou un dossier.

Elle permet notamment d'obtenir la taille d'un fichier, ses différentes dates, son mode, son numéro d'inode et d'autres informations dépendant du système d'exploitation.

Le programme suivant crée un objet Path représentant le fichier cours.txt, puis utilise stat() pour récupérer ses informations.

Sortie possible :

Les valeurs obtenues peuvent varier selon le système d'exploitation, le système de fichiers et le fichier analysé.

2. Obtenir les informations d'un fichier avec Path.stat()

La méthode stat() retourne un objet contenant plusieurs attributs. Il n'est donc pas nécessaire d'afficher toutes les informations simultanément : nous pouvons accéder individuellement à chaque valeur.

Le programme suivant récupère quelques-unes des principales informations disponibles avec Path.stat().

Sortie possible :

Les attributs st_atime, st_mtime et st_ctime sont généralement exprimés sous forme de timestamps, c'est-à-dire un nombre de secondes servant à représenter une date et une heure.

3. Obtenir la taille d'un fichier avec st_size

L'attribut st_size permet d'obtenir la taille d'un fichier en octets. Il s'agit de l'une des informations les plus couramment utilisées avec Path.stat().

Le programme suivant affiche la taille du fichier cours.txt en octets.

Sortie possible :

Pour obtenir une valeur plus lisible lorsqu'un fichier est volumineux, nous pouvons convertir sa taille en kilooctets en divisant le nombre d'octets par 1024.

Sortie possible :

De la même manière, nous pouvons convertir la taille en mégaoctets en divisant par 1024 × 1024.

Sortie possible :

4. Obtenir la date de dernière modification avec st_mtime

L'attribut st_mtime correspond à la date et à l'heure de la dernière modification du contenu du fichier. Sa valeur est retournée sous forme de timestamp.

Le programme suivant récupère directement cette valeur.

Sortie possible :

Cette valeur est utile pour effectuer des comparaisons, mais elle n'est pas très lisible directement. Nous pouvons la convertir en date avec le module datetime.

Sortie possible :

5. Obtenir la date du dernier accès avec st_atime

L'attribut st_atime fournit le timestamp associé au dernier accès au fichier tel qu'il est enregistré par le système de fichiers.

Le programme suivant récupère cette information puis la transforme en date avec datetime.fromtimestamp().

Sortie possible :

Il faut toutefois savoir que la mise à jour de st_atime dépend du système d'exploitation, du système de fichiers et de ses options de montage. Cette valeur n'est donc pas nécessairement actualisée après chaque lecture du fichier.

6. Obtenir les informations de création avec st_ctime

L'attribut st_ctime doit être interprété avec prudence car sa signification dépend du système d'exploitation. Sous Windows, il correspond généralement à la date de création du fichier. Sur de nombreux systèmes Unix, il correspond au dernier changement des métadonnées du fichier et non à sa date de création.

Le programme suivant affiche la valeur de st_ctime sous forme de date lisible.

Sortie possible :

Il ne faut donc pas présenter systématiquement st_ctime comme la date de création d'un fichier dans un programme destiné à fonctionner sur plusieurs systèmes.

7. Afficher les dates dans un format lisible

La fonction datetime.fromtimestamp() permet de convertir les timestamps retournés par stat() en objets représentant des dates. La méthode strftime() permet ensuite de choisir précisément leur format d'affichage.

Le programme suivant affiche la date de dernière modification sous la forme jour/mois/année heure:minute:seconde.

Sortie possible :

Nous pouvons ainsi afficher simultanément les principales dates associées au fichier.

Sortie possible :

8. Obtenir les permissions et autres informations

L'objet retourné par Path.stat() contient d'autres informations sur le fichier. Parmi les principaux attributs, nous trouvons st_mode, st_ino, st_dev et st_nlink.

  • st_mode : type de fichier et bits de permissions.
  • st_ino : numéro d'inode ou identifiant fourni par le système de fichiers.
  • st_dev : identifiant du périphérique contenant le fichier.
  • st_nlink : nombre de liens physiques associés.

Le programme suivant affiche ces informations pour le fichier cours.txt.

Sortie possible :

Pour afficher les permissions sous une forme plus facile à interpréter, nous pouvons utiliser la fonction stat.filemode() du module stat.

Sortie possible :

Le premier caractère indique ici le type d'élément et les caractères suivants représentent les différents bits de permissions. Leur interprétation pratique dépend également du système d'exploitation.

9. Gérer les erreurs avec Path.stat()

Si nous utilisons Path.stat() sur un chemin qui n'existe pas, Python déclenche généralement une exception FileNotFoundError. Nous pouvons vérifier l'existence du fichier avant d'obtenir ses informations.

Le programme suivant utilise is_file() avant d'appeler stat().

Sortie possible :

Nous pouvons également utiliser une structure try...except pour gérer les erreurs pouvant apparaître pendant l'appel à stat().

Sortie possible :

10. À retenir

La méthode Path.stat() de la classe Path permet d'obtenir de nombreuses informations sur un fichier ou un dossier directement depuis le système de fichiers.

  • Path.stat() retourne les informations associées à un chemin.
  • st_size indique la taille du fichier en octets.
  • st_mtime indique la date de dernière modification du contenu.
  • st_atime correspond au dernier accès enregistré par le système de fichiers.
  • st_ctime n'a pas la même signification sous Windows et sous Unix.
  • datetime.fromtimestamp() permet de convertir un timestamp en date lisible.
  • strftime() permet de choisir le format d'affichage d'une date.
  • st_mode contient notamment les informations de type et de permissions.
  • stat.filemode() permet de représenter les bits du mode sous une forme plus lisible.
  • is_file() ou try...except permettent de gérer le cas d'un fichier inexistant.

Le programme suivant regroupe quelques-unes des informations les plus utiles concernant un fichier : son chemin, sa taille et sa date de dernière modification.

Sortie possible :

 


 


Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


Leave a Reply

Your email address will not be published. Required fields are marked *