Fichiers & context managers#
courant
Ouverture avec with (recommandé)#
with open("data.txt", "r", encoding="utf-8") as f:
contenu = f.read()
# fichier fermé automatiquement, même en cas d'exception
Modes d'ouverture#
| Mode | Rôle |
|---|---|
"r" |
Lecture (défaut) |
"w" |
Écriture, écrase le fichier existant |
"a" |
Ajout en fin de fichier |
"x" |
Création exclusive (échoue si le fichier existe) |
"r+" |
Lecture + écriture |
"b" (suffixe) |
Mode binaire, ex. "rb", "wb" |
Lecture#
f.read() # tout le contenu (str)
f.readline() # une ligne
f.readlines() # liste de lignes
for ligne in f: # itération ligne par ligne (efficace en mémoire)
print(ligne.strip())
Écriture#
with open("data.txt", "w", encoding="utf-8") as f:
f.write("une ligne\n")
f.writelines(["a\n", "b\n"])
Plusieurs fichiers dans un with#
Context manager personnalisé#
class Chrono:
def __enter__(self):
import time
self.debut = time.perf_counter()
return self
def __exit__(self, exc_type, exc_val, exc_tb):
import time
print(f"durée : {time.perf_counter() - self.debut:.3f}s")
return False # ne supprime pas une exception éventuelle
with Chrono():
...