Chapitre 4 : Les Enregistrements et les Fichiers en Python
Introduction aux Enregistrements
Définition et Utilité des Enregistrements
En informatique, un enregistrement est une structure de données qui regroupe plusieurs éléments de données sous un même nom. Chaque élément d'un enregistrement peut être de type différent. Les enregistrements sont particulièrement utiles pour modéliser des objets du monde réel de manière structurée.
Utilisation des Tuples et des Classes pour Modéliser des Enregistrements
Tuples : Un tuple est une séquence immuable d'éléments. En Python, les tuples peuvent être utilisés pour créer des enregistrements simples. Par exemple :
pythonpersonne = ("John", "Doe", 30)
Dans cet exemple,
personne
est un enregistrement contenant le prénom, le nom et l'âge d'une personne.Classes : Pour des enregistrements plus complexes, on utilise généralement des classes. Les classes permettent de définir des objets avec des attributs et des méthodes. Par exemple :
pythonclass Personne: def __init__(self, prenom, nom, age): self.prenom = prenom self.nom = nom self.age = age
Ici, la classe
Personne
modélise un enregistrement avec des attributs pour le prénom, le nom et l'âge.
Manipulation des Fichiers en Python
Types de Fichiers : Texte vs Binaire
- Fichiers Texte : Contiennent des données sous forme de texte. Ils sont généralement plus faciles à lire et à écrire pour les humains. Les fichiers texte utilisent des encodages comme UTF-8 ou ASCII.
- Fichiers Binaires : Contiennent des données sous forme binaire, ce qui les rend plus compacts mais moins lisibles pour les humains. Les fichiers binaires peuvent stocker des données plus complexes.
Ouverture et Fermeture des Fichiers
Pour ouvrir un fichier en Python, on utilise la fonction open()
. Il est important de fermer les fichiers après leur utilisation pour libérer les ressources.
python
fichier = open("exemple.txt", "r") # Ouverture en mode lecture
# Traitement du fichier
fichier.close() # Fermeture du fichier
Modes d'Ouverture des Fichiers
"r"
: Lecture seule"w"
: Écriture seule (création ou écrasement du fichier)"a"
: Ajout à la fin du fichier"b"
: Mode binaire (ajouter à l'un des modes précédents pour traiter des fichiers binaires, par exemple"rb"
pour lecture binaire)
Opérations sur les Fichiers
Lecture et Écriture de Fichiers Texte
Pour lire un fichier texte ligne par ligne, on peut utiliser readline()
ou readlines()
. Pour écrire dans un fichier texte, on utilise write()
.
python
# Lecture d'un fichier texte
with open("exemple.txt", "r") as fichier:
contenu = fichier.readlines()
# Écriture dans un fichier texte
with open("exemple.txt", "w") as fichier:
fichier.write("Bonjour, monde!\n")
Gestion des Fichiers Binaires : Pickle, Struct
Pickle : Permet de sérialiser (convertir en bytes) et désérialiser (convertir de bytes en objets Python) des objets Python.
pythonimport pickle # Sérialisation with open("donnees.pkl", "wb") as fichier: pickle.dump(objet, fichier) # Désérialisation with open("donnees.pkl", "rb") as fichier: objet = pickle.load(fichier)
Struct : Permet de manipuler des données binaires avec une structure définie.
pythonimport struct # Pack (convertir en bytes) donnees_binaires = struct.pack('I', 1234) # Unpack (convertir de bytes en valeur) valeur = struct.unpack('I', donnees_binaires)[0]
Traitement des Erreurs et Exceptions Liées aux Fichiers
Il est essentiel de gérer les erreurs lors de la manipulation des fichiers pour éviter les plantages de programmes. Utilisez les blocs try...except
pour capturer et traiter les exceptions.
python
try:
with open("exemple.txt", "r") as fichier:
contenu = fichier.read()
except FileNotFoundError:
print("Le fichier n'existe pas.")
except IOError:
print("Erreur d'entrée/sortie.")
Parcours des Fichiers
Lecture Ligne par Ligne, par Blocs
Pour lire un fichier ligne par ligne :
python
with open("exemple.txt", "r") as fichier:
for ligne in fichier:
print(ligne.strip())
Pour lire un fichier par blocs :
python
with open("exemple.txt", "r") as fichier:
contenu = fichier.read(1024) # Lire les premiers 1024 octets
Utilisation des Curseurs (Seek, Tell)
seek(offset, whence)
: Déplace le curseur à une position spécifique dans le fichier.tell()
: Renvoie la position actuelle du curseur dans le fichier.
python
with open("exemple.txt", "r") as fichier:
fichier.seek(10) # Déplacer le curseur à la position 10
print(fichier.tell()) # Afficher la position actuelle du curseur
print(fichier.read(20)) # Lire 20 octets à partir de la position 10
Fichiers CSV et JSON
Manipulation des Fichiers CSV : Module CSV
Le module csv
permet de lire et d'écrire des fichiers CSV facilement.
python
import csv
# Lecture d'un fichier CSV
with open("donnees.csv", "r") as fichier:
lecteur = csv.reader(fichier)
for ligne in lecteur:
print(ligne)
# Écriture dans un fichier CSV
with open("donnees.csv", "w", newline='') as fichier:
ecrivain = csv.writer(fichier)
ecrivain.writerow(["Nom", "Age"])
ecrivain.writerow(["Alice", 30])
ecrivain.writerow(["Bob", 25])
Sérialisation et Désérialisation JSON : Module JSON
Le module json
permet de convertir des objets Python en format JSON et vice versa.
python
import json
# Sérialisation (conversion en JSON)
obj = {"nom": "Alice", "age": 30}
with open("donnees.json", "w") as fichier:
json.dump(obj, fichier)
# Désérialisation (conversion de JSON en objet Python)
with open("donnees.json", "r") as fichier:
obj = json.load(fichier)
print(obj)
Persistance des Données
Sauvegarde et Restauration d'Objets Complexes
Pour sauvegarder des objets complexes, on peut utiliser la sérialisation avec pickle
ou json
, selon le format souhaité.
python
import pickle
# Sauvegarde d'un objet complexe
obj_complexe = {"nom": "Alice", "age": 30, "employe": True}
with open("objet_complexe.pkl", "wb") as fichier:
pickle.dump(obj_complexe, fichier)
# Restauration d'un objet complexe
with open("objet_complexe.pkl", "rb") as fichier:
obj_complexe = pickle.load(fichier)
print(obj_complexe)