CommencezCommencez gratuitement

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

Voir le cours

Instructions de l’exercice

  • Céder le contrôle de open_read_only() au bloc de contexte, en veillant à ce que l'objet read_only_file soit affecté à my_file.
  • Utiliser la méthode .close() de read_only_file pour é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())
Modifier et exécuter le code