Tutoriel Python : manipuler les fichiers et les dossiers

id 3479

Table des matières

Introduction

  1. Module os

1.1. Obtenir le répertoire courant

1.2. Changer le répertoire courant

1.3. Lister les fichiers d’un répertoire

  1. Chemins

2.1. Types de chemins

2.2. Manipulation des noms de chemins

  1. Manipulation des fichiers textes

3.1. Ouvrir un fichier

3.2. Fermer un fichier

3.3. Lire un fichier

3.4. Ecrire dans un fichier

Mot-clé with

Autres opérations sur les fichiers et dossiers

  1. Exercices
  2. Solution des exercices

Conclusion

Introduction

Les fichiers sont l’un des principaux objets dans Python puisqu’ils permettent de stocker un grand nombre de données. Cependant afin de manipuler les fichiers on doit tout d’abord savoir travailler sur les répertoires, ceci fera le l’objet de la première partie de ce tutoriel. La deuxième partie quant à elle traitera la manipulation des fichiers, c’est à dire comment les ouvrir, les lire et écrire dedans.

1. Module os

Le module os en Python permet d’interagir avec le système d’exploitation, ainsi de manipuler les répertoires c’est-à-dire il fournit des fonctions permettant de créer et de supprimer un fichier, de récupérer son contenu, de modifier et d’identifier le répertoire courant, etc.

Pour utiliser ce module, on le charge en utilisant la commande import.

Notons que pour utiliser une fonction d’un module, le nom de celui-ci préfixe la fonction en question. Nous allons voir ci-dessous trois importantes fonctions permettant d’interagir avec le système d’exploitation, à savoir : getcwd(), chdir() et listdir().

1.1.  Obtenir le répertoire courant

Prenons la fonction getcwd() (cwd = Current Working Directory) qui retourne l’adresse du répertoire dans lequel on est en train de travailler sous forme de chaîne de caractères.

Exemple :

À travers cet exemple on veut obtenir le répertoire courant.

  • Code :

os.getcwd()

  • Résultat de l’exécution :

1.2.  Changer le répertoire courant

La fonction chdir() (CHange DIRectory) permet de changer le répertoire courant. Cette fonction prend en paramètre le nom du nouveau répertoire sous forme de chaîne de caractères. 

Exemple :

A travers cet exemple on va changer de répertoire.

  • Code :

os.chdir('/Users/LENOVO/Desktop/coursGratuit')



  • Résultat de l’exécution :

1.3.  Lister les fichiers d’un répertoire

Pour obtenir la liste des fichiers contenus dans un répertoire dont le nom est passé en paramètre on utilise la fonction listdir() (list directory).

Exemple :

On veut avoir une liste des fichiers d’un répertoire.

  • Code :

os.listdir('/Users/LENOVO/Desktop/coursGratuit')

  • Résultat de l’exécution :

2. Chemins

2.1.  Types de chemins 

Un chemin sur l’ordinateur est une suite de noms de dossiers, comprenant le nom du fichier à la fin, qui indique l’endroit exact d’un fichier. Il existe deux types de chemins :

·Chemin absolu : donne la position d’un fichier à partir de la racine du disque.

·Chemin relatif : part du dossier en cours de lecture (répertoire courant).

Exemple :

Voici l’exemple d’un chemin absolu :

Code :

/Users/LENOVO/Desktop/coursGratuit/exemple1.txt

Cet exemple représente le chemin détaillé pour arriver au fichier texte nommé exemple1.

Voici l’exemple d’un chemin relatif :

Code :

exemple1.txt

Ce chemin n’a de sens que si l’on précise le dossier où on est.

Remarque : afin d’être certain de l’endroit où on travaille, il est recommandé d’utiliser les chemins absolus.

2.2.  Manipulation des noms de chemins

Les chemins en Python sont des objets de type chaîne de caractères. Alors, il est possible d’utiliser les opérations de chaînes pour les manipuler quoique cela ne soit pas recommandé.  Pour concaténer deux chemins, par exemple, il est conseillé de faire appel à la fonction join() que d’utiliser l’opérateur +.

Remarque : Les fonctions utilisées pour manipuler les noms de chemins se trouvent dans le module os.path. Vous pouvez faire appel à l’aide à travers la manipulation (voir capture ci-après) suivante pour afficher toutes les méthodes de manipulation.

Code :

help(os.path)

résultat de l’exécution :

Le tableau ci-après résume les fonctions les plus utilisées et qui permettent la manipulation des chemins:

FONCTION

UTILITÉ

abspath(path)

Retourne le chemin absolu du chemin relatif path.

basename(path)

Retourne le dernier élément du chemin.

commonprefix(list)

Retourne le chemin commun le plus long d’une liste de chemins.

exists(path)

Test si un chemin existe.

join(path1, path2)

Concatène plusieurs chemins.

normcase(s)

Normalise la casse d’un chemin.

normpath(path)

Normalise le chemin.



samefile(f1,f2)

Test si deux chemins font référence au même fichier

split(path)

Fractionne un chemin path en deux parties. Retourne 2-tuple of strings

3. Manipulation des fichiers textes

Avant d’entamer cette partie, nous vous recommandons de créer un fichier dans votre répertoire de travail. De notre part notre fichier est exemple1.txt et contient la phrase suivante :

« Bonjour tout le monde, ceci est un premier exemple.»

3.1.  Ouvrir un fichier

Pour ouvrir un fichier en Python on utilise la fonction open() qui prend en paramètre les éléments suivants :

·Le chemin du fichier qu’on souhaite ouvrir et qui peut être absolu ou relatif.

·Le mode d’ouverture du fichier et est passé sous la forme d’une chaîne de caractères. On distingue trois modes :

  • r’ : pour l’ouverture en lecture seule (Read).
  • w’ : pour l’ouverture en mode écriture (Write), si le fichier existe déjà son contenu est écrasé sinon il est créé.
  • a’ : pour l’ouverture en mode ajout (Append), si le fichier existe déjà on écrit à la fin de ce dernier sans écraser son contenu sinon il est créé.

Exemple :

Si on souhaite ouvrir le fichier exemple1.txt on procède ainsi :

Code :

exemple = open('exemple1.txt', 'r')

Résultat de l’exécution :

Remarquons que le chemin passé en paramètre est un chemin relatif. Ce qui nous a permis d’utiliser ce type de chemin c’est qu’on a changé de répertoire précédemment, alors dans ce cas ce n’est pas la peine de mettre le chemin absolu ‘/Users/LENOVO/Desktop/coursGratuit/exemple1.txt’.

3.2.  Fermer un fichier

Pour fermer un fichier on fait appel à la méthode close(). Il faut garder en tête que tout fichier ouvert doit impérativement être fermé, car si d’autres applications souhaitent accéder à celui-ci, ils ne le pourront pas car il sera déjà ouvert. C’est l’une des bonnes habitudes à appliquer en programmation.

Exemple :

Pour fermer le fichier exemple1.txt on procède comme suit :

Code

exemple.close()

Résultat de l’exécution :

Le fichier est fermé.

3.3.  Lire un fichier

Pour lire le contenu d’un fichier on utilise la méthode read(). Celle-ci renvoie tout le contenu du fichier sous forme d’une chaîne de caractères.

Exemple :

Voici un exemple de lecture d’un fichier.

Code :

exemple = open('exemple1.txt', 'r')
print(exemple.read())
exemple.close()

Résultat de l’exécution :

Il existe aussi en Python la méthode readlines() qui permet de lire la totalité des lignes du fichier en une seule instruction et renvoie son résultat dans une variable de type liste. Contrairement à la méthode readline() qui renvoie une chaîne de caractères et ne lit qu’une seule ligne à la fois.

Passons à un exemple pour éclaircir la différence entre ces deux méthodes.

Exemple :

Dans cet exemple on utilise la méthode readlines().

Code :

exemple = open('exemple1.txt', 'r')
contenu1 = exemple.readlines()
print(contenu1)
exemple.close()

Résultat de l’exécution :

Remarquons que le résultat est une liste de chaîne de caractères contenant tout le contenu du fichier.

Dans cet exemple on utilise la méthode readline().

Code :

exemple = open('exemple1.txt', 'r')
contenu2 = exemple.readline()
print(contenu2)
exemple.close()

Résultat de l’exécution :

Remarquons qu’en utilisant la méthode readline() on résulte uniquement de la première ligne de notre fichier.

3.4.  Ecrire dans un fichier

Maintenant qu’on a vu comment ouvrir, fermer et lire un fichier il ne reste que de présenter comment écrire dans celui-ci.



Tout comme mentionné au début de la partie de manipulation des fichiers textes, pour écrire dans un fichier on peut l’ouvrir en mode ‘w’ qui écrase le contenu du fichier ou le mode ‘a’ qui ajoute le texte à la fin du fichier. Cependant le choix du mode d’ouverture est en dépendance de vos besoins.

Afin d’écrire dans un fichier, on utilise la méthode write() qui prend en paramètre la chaîne de caractères à écrire dans le fichier et affiche le nombre de caractères qui ont été écrits.

Exemple :

Dans cet exemple on va ajouter une deuxième ligne au fichier exemple1.txt. Alors on a choisi le mode d’ouverture ‘a’, pour ne pas écraser le contenu du fichier.

Code :

exemple = open('exemple1.txt', 'a')
exemple.write("\nVoila la deuxième ligne du fichier")
exemple.close()

Résultat de l’exécution :

Remarque : \n permet de revenir à la ligne, ce qui sera clair dans la capture suivante (capture du fichier).

Allons voir notre fichier texte :

Mot-clé with

Il existe dans Python le mot-clé with permettant d’ouvrir et de fermer efficacement un fichier. Imaginons que votre programme conduit à une erreur lors de l’exécution, alors l’utilisation du mot-clé with garantit que votre fichier sera fermé.

Contemplons l’exemple ci-après :

Code :

with open('exemple1.txt','r') as exemple:
  print(exemple.read())
exemple.closed

Résultat de l’exécution :

Lors de cet exemple on a pu ouvrir le fichier exemple1.txt en mode ‘r’ et afficher son contenu à l’aide de la méthode read(). Ensuite on a testé si le fichier est fermé ou non. Puisque on résulte d’un True alors le fichier est bien fermé. Notons qu’on n’a pas utilisé la méthode close() pour cela d’où l’utilité du mot-clé with.

Autres opérations sur les fichiers et dossiers

Renommer un fichier :

Pour ce faire on fait appel à la fonction rename(). Sa syntaxe est la suivante :

os.rename('ancienNom.txt', 'nouveauNom.txt')

Supprimer un fichier :

Pour supprimer un fichier on utilise la fonction remove() dont la syntaxe est la suivante :

os.remove('nomFichier.txt')

Créer un dossier :

Afin de créer un dossier on utilise la fonction mkdir(). Sa syntaxe est la suivante :

os.mkdir('/chemin/dossier/')

Supprimer un dossier vide :

Pour ce faire on utilise la fonction rmdir(), sa syntaxe est comme suivant :

os.rmdir('/chemin/dossier_vide/')

Supprimer un dossier et son contenu :

Pour ce faire on utilise la fonction shutil.rmtree(), dont la syntaxe est :

import shutil
shutil.rmtree('/chemin/dossier/')

4. Exercices

Exercice 1 :

Ecrire un programme qui permet de créer un fichier et de l’alimenter de plusieurs lignes de textes de votre choix.

Exercice 2 :

Ecrire un programme qui permet de renvoyer le nombre de lignes d’un fichier.

Exercice 3 :

Ecrire un programme qui affiche chaque ligne du fichier et son itération.

Exercice 4 :

Ecrire un programme qui demande à l’utilisateur le nom d’un fichier et affiche son contenu.

5. Solution des exercices

Exercice 1 :  

Dans cet exemple on va créer un fichier et écrire dedans 3 lignes.

Code :

fichier = open('exercie1.txt', 'w')
fichier.write("ceci est une première ligne."+"\nceci est une deuxième ligne."
  + "\nceci est une troisième ligne.")
fichier.close()

Résultat de l’exécution :

Exercice 2 :

Dans cet exercice on va faire appel à la boucle while pour compter les lignes d’un fichier.

Code :

fichier = open('exercie1.txt', 'r')
i = 0
chaine = fichier.readline()
while chaine !='':
  i+=1
  chaine = fichier.readline()
fichier.close()
print(i)

Résultat de l’exécution :



Exercice 3 :

Lors de cet exercice on va lire le fichier en mode read et on va afficher chaque ligne de celui-ci en lui attribuant une itération et cela en utilisant la boucle for.

Code :

fichier = open('exercie1.txt', 'r')
i = 0
for ligne in fichier:
  i+=1
  print(str(i)+'.' +ligne)
fichier.close()

Résultat de l’exécution :

Exercice 4 :

Dans cet exercice à travers la fonction input(), l’utilisateur fait entré le nom d’un fichier, puis on affiche son contenu.

Code :

ichier = input('Entrez le nom du fichier:')
with open (fichier,'r') as fichier:
  print(fichier.read())

Résultat de l’exécution :

Conclusion

Lors de ce tutoriel on a vu les trois principales fonctions permettant l’interaction avec le système d’exploitation à savoir getcwd() qui permet d’obtenir le répertoire courant, chdir() qui permet de changer le répertoire courant et listdir() qui permet de lister les fichiers d’un répertoire. Ensuite on a vu les deux types de chemins : chemin relatif et chemin absolu. On a également découvert les fonctions et méthodes qui permettent de manipuler les fichiers (open(), close(), read(), write()). Sans oublier le mot-clé with qui permet de fermer un fichier sans avoir à faire appel à la méthode close().