Erste SchritteKostenlos loslegen

Ein schreibgeschützter open()-Kontextmanager

Du hast einen Haufen Daten für dein nächstes Deep-Learning-Projekt, für die du monatelang gesammelt und bereinigt hast. Es wäre schrecklich, wenn du versehentlich eine dieser Dateien überschreibst, wenn du versuchst, sie für die Ausbildung einzulesen. Deshalb beschließt du, eine schreibgeschützte Version des open() Kontextmanagers zu erstellen, die du in deinem Projekt verwenden kannst.

Der reguläre open() Kontextmanager:

  • nimmt einen Dateinamen und einen Modus ('r' für Lesen, 'w' für Schreiben oder 'a' für Anhängen)
  • öffnet die Datei zum Lesen, Schreiben oder Anhängen
  • gibt die Kontrolle an den Kontext zurück, zusammen mit einem Verweis auf die Datei
  • wartet darauf, dass der Kontext beendet wird
  • und schließt dann die Datei vor dem Beenden

Dein Kontextmanager macht das Gleiche, nur dass er nur den Dateinamen als Argument nimmt und die Datei nur zum Lesen öffnet.

Diese Übung ist Teil des Kurses

Funktionen in Python schreiben

Kurs anzeigen

Anleitung zur Übung

  • Gib die Kontrolle von open_read_only() an den Kontextblock ab und sorge dafür, dass das Objekt read_only_file dem Objekt my_file zugewiesen wird.
  • Verwende die Methode read_only_file's .close() um sicherzustellen, dass du keine offenen Dateien herumliegen lässt.

Interaktive Übung zum Anfassen

Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.

@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())
Bearbeiten und Ausführen von Code