ÎncepețiÎncepe gratuit

Un context manager open() doar pentru citire

Ai o serie de fișiere cu date pentru următorul tău proiect de învățare profundă, pe care ai petrecut luni întregi colectându-le și curățându-le. Ar fi groaznic să suprascrii accidental unul dintre aceste fișiere atunci când încerci să îl citești pentru antrenament, așa că decizi să creezi o versiune doar pentru citire a context manager-ului open(), pe care s-o folosești în proiect.

Context manager-ul standard open():

  • primește un nume de fișier și un mod ('r' pentru citire, 'w' pentru scriere sau 'a' pentru adăugare)
  • deschide fișierul pentru citire, scriere sau adăugare
  • cedează controlul înapoi la context, împreună cu o referință la fișier
  • așteaptă ca blocul de context să se termine
  • și apoi închide fișierul înainte de a ieși

Context manager-ul tău va face același lucru, cu excepția că va primi doar numele fișierului ca argument și va deschide fișierul numai pentru citire.

Acest exercițiu face parte din cursul

Scrierea funcțiilor în Python

Vezi cursul

Instrucțiuni pentru exercițiu

  • Cedează controlul din open_read_only() către blocul de context, asigurându-te că obiectul read_only_file este atribuit variabilei my_file.
  • Folosește metoda .close() a obiectului read_only_file pentru a te asigura că nu lași fișiere deschise.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

@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())
Editează și rulează codul