Comment gérer ses fichiers avec Python et le module os ?

Python

Comment gérer ses fichiers avec Python et le module os ?

I. Présentation

Dans ce tutoriel, nous allons apprendre à gérer nos fichiers avec Python de manière uniforme, que vous soyez sous Linux ou Windows.

Nous allons pour cela nous aider du module standard os disponible par défaut pour toute installation de Python3. Il s’agit d’un module central pour gérer son système de fichier ou interagir avec le système d’exploitation. 

Également, si vous débutez en Python, consultez notre article d’introduction qui vous aidera à installer les prérequis et acquérir les bases du langage : 

Note : pour suivre ce tutoriel, je vous recommande de passer par le mode interactif de Python plutôt que par un script. Cela rend l’utilisation plus dynamique et plus simple pour un apprentissage.

II. Importer le module OS

Pour commencer à utiliser le module os, il est nécessaire de l’importer dans votre session interactive ou script Python. Le fait que le module soit présent sur votre système ne suffit pas, il faut aussi l’importer. Cela se fait simplement avec l’instruction suivante :


Nous pouvons ensuite lister toutes les fonctions de ce module grâce à l’instruction suivante :


En Python, la fonction , permet d’obtenir une liste des attributs et méthodes disponibles pour un objet. Cela inclut des fonctions, des classes, et d’autres objets définis dans ce module. Nous n’utiliserons pas toutes les fonctions du module os, seulement quelques-une en relation avec la manipulation des fichiers. 

Si vous souhaitez obtenir plus d’informations sur une fonction spécifique, notamment son utilisation, ses paramètres et sorties possibles, il faut aller voir du côté de la documentation officielle : docs.python.org/3/library/os.html.

En programmation, savoir lire correctement et comprendre la documentation est une compétence importante qui fait la différence en termes de qualité du code et de rapidité.

Voici à titre d’exemple le contenu de la documentation pour la fonction : 

Extrait de la documentation Python du module os.Extrait de la documentation Python du module os.
Extrait de la documentation Python du module os.

Le titre nous apprend que cette fonction prend en paramètre un chemin (une chaine de caractère). Dans la description qui suit, nous voyons que cette fonction retourne une liste dont l’ordre des éléments est aléatoire.

Faisons un test simple, qui concerne aussi bien la manipulation des fichiers que des dossiers avec cette première fonction :


En réponse, vous devriez avoir un affichage tel que celui-ci :


Passons à présent aux fonctions spécifiques au traitement des fichiers proposés par le module os.

III. Utilisation des fonctions de gestion des fichiers Python

A. Vérifier si un fichier existe

Commençons par une tâche relativement simple. Nous souhaitons vérifier qu’un fichier existe sur notre système. Il est pour cela possible d’utiliser la fonction . Voici un exemple :


Cette fonction renvoi un booléen en sortie, c’est-à-dire une valeur (vrai) ou (faux). 

Sous Windows, pensez à échapper les antislashs (“”) dans vos chemins en les doublant (“\”). Sinon, vous obtiendrez une erreur de syntaxe.

Cela facilite notamment son utilisation dans une condition. Voici un exemple sous Windows :


Nous pouvons aussi très bien stocker cette valeur booléenne dans une variable pour la réutiliser plus tard. Voici un exemple sous Linux : 


Enfin, notez que cette fonction accepte également les chemins relatifs (chemin depuis position du script sur le système de fichier et non de sa racine ou ) :


Aussi, nous pouvons vérifier qu’un chemin mène bien vers un fichier, et non un dossier. Nous utiliserons pour cela la fonction :


Dans ce premier exemple, la fonction renvoie , car le chemin existe, mais mène à un dossier. Les deux exemples suivants montrent la différence entre un fichier existant (et étant bien un fichier) et un fichier qui n’existe pas.

B. Récupérer les métadonnées d’un fichier

Les métadonnées sont toutes les informations sur le fichier lui-même plutôt que son contenu. On parle, par exemple, de sa taille, date de modification, date de création, etc. Sous Linux, cela inclut aussi les permissions et le propriétaire du fichier. Le module os offre plusieurs fonctions pour accéder à ces informations.

Pour obtenir la taille d’un fichier en octets, nous utiliserons la fonction . Voici un exemple :


Plusieurs fonctions permettent de retrouver les dates de dernières modifications (), accès () et changement de métadonnées ().

Attention, le getctime ne contient pas la date de création du fichier, mais la date de dernière modification des métadonnées (propriétaire, permissions, etc.).

Celles-ci renvoient les dates en secondes depuis le 1er janvier 1970 (format epoch).  Vous pouvez convertir cette valeur en une date lisible avec le module standard (qu’il faut aussi importer) : 


Cependant, il convient généralement d’utiliser la fonction , qui permet d’obtenir toutes ces informations au sein d’un même objet : 


Vous l’aurez compris, les attributs de l’objet , et permettent respectivement d’accéder à la date de dernière modification, accès et changement des métadonnées. 

Pour faire un exemple plus complet, je vous propose l’exercice suivant : 

  • Écrivez un petit script qui va vérifier la date de modification, d’accès et de modification des métadonnées d’un fichier dont le chemin est inscrit en dur (dans une variable);
  • Le script doit également afficher la taille du fichier en octet;
  • Incluez une fonction de conversation du temps avec ;
  • Vérifier avant tout que le fichier existe et est bien un fichier ;

Voici la réponse à cet exercice :


J’ai également réutilisé ce que nous avons appris plus haut en intégrant un test d’existence du fichier avec la fonction . Voici un retour possible de ce script : 


Ces fonctions sont particulièrement utiles pour la gestion des fichiers, par exemple, pour trier ou filtrer des fichiers en fonction de leur taille ou de leur date de modification.

C. Supprimer ou renommer un fichier

La gestion des fichiers inclut souvent des opérations de suppression ou de renommage. Encore une fois, c’est le module que nous allons utiliser pour ces tâches. Pour supprimer un fichier, nous pouvons utiliser la fonction . 

Attention, il n’y pas de retour arrière possible avec cette commande, le fichier sera définitivement supprimé (pas de corbeille).

Cette fonction prend en argument le chemin vers le fichier à supprimer.


Pour éviter toute erreur, nous pouvons combiner cela avec la fonction vue précédemment. Sinon, cette opération lèvera une exception . 


Pour renommer un fichier ou le déplacer vers un autre emplacement, nous pouvons utiliser la fonction . Cette fonction prend deux arguments : le nom/chemin source et celui de destination.


Cette fonction peut également être utilisée pour déplacer un fichier vers un autre répertoire en spécifiant un chemin de destination complet.


En utilisant ces fonctions, vous pouvez facilement gérer les fichiers sur votre système, que ce soit pour les supprimer ou les renommer selon vos besoins.

IV. Conclusion

Le module est un très utile pour gérer les fichiers et interagir avec le système d’exploitation de manière uniforme, que ce soit sous Linux ou Windows. 

En maîtrisant ces fonctions de base, vous serez en mesure de créer des scripts Python efficaces pour automatiser la gestion de vos fichiers.

SOURCE