Blog ENI : Toute la veille numérique !
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici
💥 Du 22 au 24 novembre : Accès 100% GRATUIT
à la Bibliothèque Numérique ENI. Je m'inscris !
  1. Livres et vidéos
  2. Algorithmique
  3. Les fichiers
Extrait - Algorithmique Techniques fondamentales de programmation - Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique (Nouvelle édition)
Extraits du livre
Algorithmique Techniques fondamentales de programmation - Exemples en Python (nombreux exercices corrigés) - BTS, DUT informatique (Nouvelle édition) Revenir à la page d'achat du livre

Les fichiers

Le système de fichiers

1. Préambule

N’en avez-vous pas assez de devoir toujours entrer vos valeurs à la main ? Est-ce vraiment de cette manière que fonctionnent les programmes ?

Pour donner une solution à la première question, nous allons voir dans ce chapitre la persistance des données dans un fichier. La persistance indique juste que nous allons stocker physiquement sur l’ordinateur les données que le programme va utiliser mais aussi celles que le programme peut compiler.

Avant de voir comment stocker des informations dans des fichiers, il nous faut voir ce que sont justement ces fichiers.

2. Répertoire et fichier

Vous avez normalement l’habitude de gérer vos répertoires et fichiers avec un explorateur de fichiers de manière graphique. Sachez que cette gestion peut également se faire par un terminal ou une console, sinon aucun programme informatique ne pourrait accéder à des fichiers.

Un fichier est un ensemble d’informations réunies grâce à un même nom, enregistré sur un disque. Quel que soit le type de fichier, un fichier est un ensemble d’octets car le langage binaire est le seul langage que comprend la machine, comme la montre la figure ci-dessous représentant un fichier texte en octet. Cette figure représente le début de ce chapitre écrit avec le logiciel Word...

Les différents types de fichiers

Un fichier est défini par son nom ou son identifiant mais surtout par son type, représenté par son extension.

Le type du fichier permet d’indiquer à l’ordinateur comment sont organisées les informations, c’est-à-dire comment elles sont formatées. Avec cette indication, l’ordinateur peut également déterminer avec quelle application il doit ouvrir ou exécuter le fichier.

Prenons l’exemple de nos scripts Python. Leur extension est .py ce qui indique à l’interpréteur Python qu’il peut les interpréter. Si vous demandez à l’interpréteur Python de lancer un script avec une extension ".xls", il ne va pas comprendre le fichier et affichera une erreur.

Dans cette section, nous allons nous focaliser sur quelques exemples de types de fichiers test qui peuvent être manipulés par des programmes en commençant par les fichiers texte simples pour finir par quelques formats de fichiers texte utilisés en informatique.

1. Texte non formaté

Les fichiers texte non formatés ont généralement l’extension ".txt", ou aucune extension quelques fois. Ce sont les fichiers les plus simples : il s’agit uniquement de texte encodé principalement avec la table ASCII, comme le montre la figure ci-dessous :

images/08RI03V3.png

Un fichier texte non formaté

Les encodages principaux des fichiers texte sont UTF-8 et le latin-1 (principalement sur macOS).

Vous pouvez ouvrir les fichiers textes non formatés avec...

Manipulation de fichiers

Pour des raisons de simplicité, nous ne manipulerons que des fichiers texte non formatés dans le reste de ce chapitre. Nous laissons le lecteur étudier la manipulation des autres types de formats de fichiers par lui-même. En effet, nous lui apportons les bases nécessaires à la manipulation de tout type de fichier texte.

De plus, nous partons également du principe que le fichier manipulé existe sur le disque et se trouve dans le même répertoire que le fichier de l’algorithme.

1. Ouvrir et fermer un fichier

Manipuler un fichier revient à utiliser un pointeur, appelé curseur pour les fichiers. Qui dit pointeur, dit gestion de son allocation et de sa désallocation.

Ce pointeur est une variable de type FICHIER. Pour l’allouer, nous allons ouvrir le fichier avec la fonction OUVRIR-FICHIER et pour le supprimer, nous allons fermer le fichier avec la fonction FERMER-FICHIER.

La fonction OUVRIR-FICHIER prend deux paramètres :

  • Le nom du fichier à ouvrir.

  • Le mode d’ouverture :

  • ecriture pour pouvoir écrire dans le fichier en commençant par la première ligne.

  • lecture pour pouvoir récupérer les données du fichier sous forme de chaînes de caractères.

VAR 
   mon_fichier : FICHIER 
 
mon_fichier <- OUVRIR-FICHIER("nom du fichier", "mode d'ouverture") 

La fonction FERMER prend comme paramètre le fichier de type FICHIER à fermer.

FERMER-FICHIER(mon_fichier) 

PROGRAMME Ouverture_fermeture_fichier 
VAR 
   mon_fichier : FICHIER 
   nom_du_fichier : CHAINE 
DEBUT 
   ECRIRE("Entrez le nom du fichier") 
   nom_du_fichier <-...

Accédons à des fichiers avec Python

1. Ouvrir et fermer un fichier

Comme en algorithmie, si vous voulez manipuler un fichier, vous devez l’ouvrir. En Python, cette opération se fait avec la fonction open.

mon_fichier = open("nom du fichier", "mode", "encodage") 

L’encodage est optionnel et représente l’encodage des caractères du fichier, par exemple UTF8.

Le mode représente les actions possibles sur le fichier :

  • Accès en lecture : r.

  • Accès en écriture : w.

  • Accès en ajout : a.

La différence entre l’accès en écriture et celui en ajout est assez implicite. En écriture, vous écrivez dès le début du fichier, quitte à effacer ce qui est déjà présent dans le fichier. En ajout, vous vous placez d’office en fin de fichier pour ajouter des informations à la fin de ce dernier sans rien effacer du contenu. 

À la différence de l’algorithmie, si le fichier n’existe pas, Python va le créer lors de l’instruction open, en écriture ou en ajout. L’ouverture d’un fichier inexistant en mode Lecture provoque une erreur terminant le script.

Toute manipulation de fichier en Python impose de le fermer après utilisation, afin de ne pas provoquer d’incohérence ou de blocage sur ce fichier. Pour ce faire, en Python, il faut appeler la fonction close sur la variable représentant le fichier.

mon_fichier.close() 

2. Lire un fichier

En Python, la lecture d’un fichier peut se faire grâce à trois fonctions qui retournent toutes une chaîne :

  • Lire tout le fichier d’un seul coup : read().

  • Lire une ligne du fichier : readline().

  • Lire toutes les lignes du fichier (retourne une liste de chaînes) : readlines()

Voyons maintenant un exemple d’utilisation de chacune de ces fonctions.

a. read()

Avec la fonction read, vous lisez tout le texte du fichier, saut de ligne inclus, en une instruction.

name =  input("Entrer...

Exercices

1. Exercice 1

Écrivez l’algorithme qui génère automatiquement dans un fichier texte les tables de multiplication bien écrites de 1 à 20. Codez le script Python correspondant.

2. Exercice 2

Écrivez l’algorithme qui recopie un fichier texte dont le nom est donné par l’utilisateur dans un autre ficher texte nommé "copie.txt". Codez le script Python correspondant.

3. Exercice 3

Écrivez l’algorithme qui compare deux fichiers texte et qui affiche la première différence. Codez le script Python correspondant.

4. Exercice 4

Écrivez l’algorithme qui recherche et affiche la ligne la plus longue dans un fichier texte. Codez le script Python correspondant.

5. Exercice 5

Codez le script Python qui remplace tous les espaces d’un fichier texte par un triple espace. Par exemple, "le chat" deviendra "le   chat".

6. Exercice 6

Codez le script Python qui compte le nombre d’occurrences de chaque caractère d’un fichier texte en utilisant un dictionnaire.

7. Pour aller plus loin

a. Exercice 7

Codez le script Python qui liste tous les fichiers d’un répertoire dont le nom est donné par l’utilisateur.

b. Exercice 8

Codez le script Python qui demande à l’utilisateur de donner le nom d’un répertoire à parcourir afin de savoir si ce répertoire...