CommencerCommencer gratuitement

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

Afficher le cours

Instructions

  • Transférez le contrôle de open_read_only() vers le bloc de contexte, en s’assurant que l'objet read_only_file soit attribué à my_file.
  • Utilisez la méthode .close() de read_only_file pour 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())
Modifier et exécuter le code