Un gestionnaire de contexte open() en lecture seule
Vous disposez d'un ensemble de fichiers de données pour votre prochain projet de deep learning, que vous avez mis des mois à collecter et à nettoyer. Il serait regrettable de remplacer accidentellement l'un de ces fichiers en essayant de le lire pour la formation. 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 standard open() :
- accepte un nom de fichier et un mode (
'r'pour la lecture,'w'pour l'écriture ou'a'pour l'ajout) - ouvre le fichier en lecture, en écriture ou en ajout
- renvoie le contrôle au contexte, ainsi qu'une référence au fichier
- attend que le contexte soit terminé
- puis ferme le fichier avant de quitter
Votre gestionnaire de contexte fera la même chose, à l'exception qu'il ne prendra que le nom du fichier comme argument et n'ouvrira le fichier qu'en lecture.
Cet exercice fait partie du cours
Écrire des fonctions en Python
Instructions
- Transférez le contrôle de
open_read_only()vers le bloc de contexte, en s’assurant que l'objetread_only_filesoit attribué àmy_file. - Utilisez la méthode
.close()deread_only_filepour vous assurer de ne pas laisser de fichiers ouverts.
Exercice interactif pratique
Essayez cet exercice en complétant cet exemple de code.
@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())