Sauberer Weg, um die Ausnahme „Datei nicht gefunden“ zu behandeln
HINTERGRUND
Ich habe eine Funktion, bei der ich eine Datei von aws s3 zwischenspeichere. Ich gebe den Pfad auf s3 und auch den lokalen Pfad an, in dem die zwischengespeicherte Datei gespeichert werden soll. Wenn die Datei auf s3 nicht existiert, wird manchmal ein 404-Fehler zurückgegeben. Das macht Sinn, aber ich möchte es anmutig handhaben. Was ich tun möchte, ist, wenn die Datei, die ich zwischenspeichern möchte, nicht existiert, möchte ich, dass meine get_overview_stream-Funktion None zurückgibt.
CODE
def get_overview_stream(*, environment, proxy_key):
s3_overview_file_path = f"s3://{FOO_TRACK_BUCKET}/{environment}"
overview_file = f"{proxy_key}.csv"
local_path = cache_directory(environment)
try:
cache.cache_file(s3_overview_file_path, local_path, overview_file)
overview_file_cache = local_path / f"{proxy_key}.csv"
return overview_file_cache.open("r")
except botocore.exceptions.ClientError as e:
if e.response["Error"]["Code"] == "404":
return None
else:
raise
Problem mit versuchter Lösung
Ich bin sehr neu in Python, daher bin ich mir nicht sicher, ob dies der beste Weg ist, um mit dieser Ausnahme umzugehen, und ob es einen saubereren Weg gibt. Wenn ja würde ich gerne Feedback hören.
Antworten
Ich würde vorschlagen, die Datei nicht in Ihrer Funktion zu öffnen, sondern stattdessen den Pfad oder zurückzugeben None
, sodass der Aufrufer die Datei mit einer with
Anweisung öffnen kann.