CommencerCommencer gratuitement

Un gestionnaire de contexte open() en lecture seule

Vous avez un tas de fichiers de données pour votre prochain projet d'apprentissage en profondeur qui vous ont pris des mois à collecter et à nettoyer. Il serait terrible d'écraser 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() pour l'utiliser dans votre projet.

Le gestionnaire de contexte habituel de open():

  • prend un nom de fichier et un mode ('r' pour la lecture, 'w' pour l'écriture, ou 'a' pour l'ajout).
  • ouvre le fichier pour la lecture, l'écriture ou l'ajout de données
  • rend le contrôle au contexte, ainsi qu'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 ne prendra que le nom du fichier comme argument et qu'il 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() au bloc contextuel, en veillant à ce que l'objet read_only_file soit assigné à my_file.
  • Utilisez la méthode .close() de read_only_file pour vous assurer que vous ne laissez pas traîner des 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