Das Arbeitsverzeichnis ändern
Du verwendest eine Open-Source-Bibliothek, mit der du tiefe neuronale Netze auf deinen Daten trainieren kannst. Leider schreibt diese Bibliothek während des Trainings Checkpoint-Modelle (also Modelle, die auf einem Teil der Daten trainiert wurden) in das aktuelle Arbeitsverzeichnis. Dieses Verhalten findest du frustrierend, weil du das Skript nicht aus dem Verzeichnis starten möchtest, in dem die Modelle gespeichert werden.
Du beschließt, das Problem zu lösen, indem du einen Context Manager schreibst, der das aktuelle Arbeitsverzeichnis ändert, dich deine Modelle bauen lässt und anschließend das Arbeitsverzeichnis auf seinen ursprünglichen Ort zurücksetzt. Du willst sicherstellen, dass mögliche Fehler während des Modelltrainings nicht verhindern, dass das Arbeitsverzeichnis wieder auf seinen ursprünglichen Ort gesetzt wird.
Diese Übung ist Teil des Kurses
Funktionen in Python schreiben
Anleitung zur Übung
- Füge eine Anweisung hinzu, mit der du alle Fehler behandeln kannst, die innerhalb des Kontexts auftreten könnten.
- Füge eine Anweisung hinzu, die sicherstellt, dass
os.chdir(current_dir)aufgerufen wird – unabhängig davon, ob ein Fehler aufgetreten ist oder nicht.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
def in_dir(directory):
"""Change current working directory to `directory`,
allow the user to run some code, and change back.
Args:
directory (str): The path to a directory to work in.
"""
current_dir = os.getcwd()
os.chdir(directory)
# Add code that lets you handle errors
____:
yield
# Ensure the directory is reset,
# whether there was an error or not
____:
os.chdir(current_dir)