with open() en Python : Gérer les fichiers comme un pro
#
Quand on bosse avec des fichiers en Python, la méthode classique c’est d’ouvrir le fichier, lire ou écrire dedans, puis le refermer. Mais soyons honnêtes, qui pense toujours à fermer proprement son fichier ? 🤨
C’est là que with open() entre en scène :
- Plus besoin de se soucier de
close() - Moins de bugs liés aux fichiers non fermés
- Code plus propre et plus lisible
C’est parti pour une exploration rapide et efficace. 🚀
1. Lire un fichier avec with open()
#
🔹 Méthode classique (à éviter) #
f = open("mon_fichier.txt", "r")
contenu = f.read()
f.close() # Oublié = fuite de ressources !
print(contenu)
Si le script plante avant close(), le fichier reste ouvert et peut causer des soucis.
🔹 Méthode propre avec with open()
#
with open("mon_fichier.txt", "r") as fichier:
contenu = fichier.read()
print(contenu) # Le fichier est fermé automatiquement après le bloc `with`
✅ Avantages :
- Le fichier se ferme automatiquement, même en cas d’erreur.
- Pas besoin d’appeler
close(), Python le fait pour nous.
2. Lire un fichier ligne par ligne #
Lire tout le fichier avec read() peut être inefficace si c’est un gros fichier.
➡️ Solution : lire ligne par ligne
with open("mon_fichier.txt", "r") as fichier:
for ligne in fichier:
print(ligne.strip()) # `strip()` pour enlever les sauts de ligne inutiles
3. Écrire dans un fichier ("w")
#
Le mode "w" écrase le fichier s’il existe déjà.
with open("nouveau_fichier.txt", "w") as fichier:
fichier.write("Hello, world !\n")
fichier.write("Ligne 2 du fichier.\n")
📌 Attention : Tout contenu précédent sera effacé.
4. Ajouter du texte ("a")
#
Le mode "a" ajoute du texte sans écraser le fichier existant.
with open("nouveau_fichier.txt", "a") as fichier:
fichier.write("Une nouvelle ligne ajoutée !\n")
5. Lire et écrire ("r+")
#
Le mode "r+" permet de lire et écrire dans un fichier existant.
with open("nouveau_fichier.txt", "r+") as fichier:
contenu = fichier.read()
fichier.write("\nAjout d'une ligne en mode lecture/écriture.")
📌 Piège ! L’écriture commence à la fin de la dernière lecture.
Exercice Pratique : Création d’un journal de logs #
🔥 Objectif : Écrire un programme qui enregistre chaque action dans un fichier log.txt avec un horodatage.
🛠 Instructions : #
- À chaque exécution du script, une nouvelle ligne est ajoutée au fichier
log.txt. - La ligne doit contenir la date et l’heure actuelle + un message.
- Utiliser
with open()pour gérer l’écriture du fichier.
💡 Solution : #
from datetime import datetime
# Générer le message de log
timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
message = f"{timestamp} - Script exécuté avec succès.\n"
# Écrire dans le fichier log
with open("log.txt", "a") as fichier:
fichier.write(message)
print("Log enregistré !")
📌 À tester : Exécutez plusieurs fois le script et regardez le contenu de log.txt. 🧐
Conclusion #
✔ with open() simplifie la gestion des fichiers et évite les oublis de close().
✔ C’est plus sécurisé et plus propre qu’un simple open().
✔ On peut lire, écrire et ajouter du contenu selon le mode choisi ("r", "w", "a", "r+" …).
🚀 Prochain challenge : créez un script qui stocke les scores d’un jeu et affiche le meilleur score à chaque exécution ! 💡