Začněte nyníZačněte zdarma

Context manager pro otevírání souborů jen pro čtení

Máš spoustu datových souborů pro svůj příští deep learning projekt, jejichž sběr a čištění ti zabraly měsíce. Bylo by katastrofální nechtěně přepsat jeden z těchto souborů při načítání pro trénování modelu – proto se rozhodneš vytvořit verzi context manageru open() jen pro čtení, kterou budeš v projektu používat.

Standardní context manager open():

  • přijme název souboru a režim ('r' pro čtení, 'w' pro zápis nebo 'a' pro přidávání)
  • otevře soubor pro čtení, zápis nebo přidávání
  • předá řízení zpět do kontextu spolu s referencí na soubor
  • počká, až kontext skončí
  • a pak soubor před ukončením zavře

Tvůj context manager bude fungovat stejně, až na to, že bude jako argument přijímat pouze název souboru a soubor otevře výhradně pro čtení.

Toto cvičení je součástí kurzu

Writing Functions in Python

Zobrazit kurz

Pokyny k cvičení

  • Předej řízení z open_read_only() do bloku kontextu tak, aby byl objekt read_only_file přiřazen do my_file.
  • Pomocí metody .close() objektu read_only_file zajisti, aby po sobě nezůstávaly otevřené soubory.

Interaktivní cvičení na vyzkoušení si v praxi

Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.

@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())
Upravit a spustit kód