Un gestionnaire de contexte open() en lecture seule
Vous avez une série de fichiers de données pour votre prochain projet de deep learning qui vous a pris des mois à recueillir et à nettoyer. Ce serait catastrophique d'écraser par erreur l'un de ces fichiers en essayant de le lire pour l'entraînement. Vous décidez donc de créer une version en lecture seule du gestionnaire de contexte open() à utiliser dans votre projet.
Le gestionnaire de contexte open() classique :
- prend un nom de fichier et un mode (
'r'pour lire,'w'pour écrire, ou'a'pour ajouter à la fin) - ouvre le fichier pour la lecture, l'écriture ou l'ajout
- cède le contrôle au contexte, avec une référence au fichier
- attend que le contexte se termine
- puis ferme le fichier avant de quitter
Votre gestionnaire de contexte fera la même chose, sauf qu'il prendra seulement le nom de fichier comme argument et n'ouvrira le fichier qu'en lecture.
Cette activité fait partie du cours
Écrire des fonctions en Python
Instructions de l’exercice
- Céder le contrôle de
open_read_only()au bloc de contexte, en veillant à ce que l'objetread_only_filesoit affecté àmy_file. - Utiliser la méthode
.close()deread_only_filepour éviter de laisser des fichiers ouverts.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
@contextlib.contextmanager
def open_read_only(filename):
"""Open a file in read-only mode.
Args:
filename (str): The location of the file to read
Yields:
file object
"""
read_only_file = open(filename, mode='r')
# Yield read_only_file so it can be assigned to my_file
____ ____
# Close read_only_file
____.____()
with open_read_only('my_file.txt') as my_file:
print(my_file.read())