Чистый способ обработки исключения файл не найден
ЗАДНИЙ ПЛАН
У меня есть функция, в которой я кеширую файл из aws s3. Я предоставляю ему путь на s3, а также локальный путь, по которому я хочу, чтобы кешированный файл жил. Иногда, если файл не существует на s3, он возвращает ошибку 404. В этом есть смысл, но я хочу справиться с этим изящно. Что я хочу сделать, так это если файл, который я пытаюсь кэшировать, не существует, я хочу, чтобы моя функция get_overview_stream возвращала None.
КОД
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
Попытка решения проблемы
Я очень новичок в python, поэтому не уверен, что это лучший способ справиться с этим исключением и есть ли более чистый способ. Если так, я хотел бы услышать отзывы.
Ответы
Я бы предложил не открывать файл в вашей функции, а вместо этого возвращать путь или None
, чтобы вызывающий мог открыть файл с помощью with
оператора.