Cara bersih untuk menangani file tidak ditemukan pengecualian
LATAR BELAKANG
Saya memiliki fungsi di mana saya menyimpan file dari aws s3. Saya menyediakannya jalur di s3 dan juga jalur lokal di mana saya ingin file yang di-cache tinggal. Terkadang jika file tidak ada di s3 itu akan mengembalikan kesalahan 404. Itu masuk akal tetapi saya ingin menanganinya dengan anggun. Yang ingin saya lakukan adalah jika file yang saya coba cache tidak ada, saya ingin fungsi get_overview_stream saya mengembalikan None.
KODE
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
Masalah Solusi yang Dicoba
Saya sangat baru mengenal python jadi saya tidak yakin apakah ini cara terbaik untuk menangani pengecualian ini dan jika ada cara yang lebih bersih. Jika demikian saya ingin mendengar tanggapan.
Jawaban
Saya menyarankan untuk tidak membuka file dalam fungsi Anda tetapi mengembalikan jalur atau None
, sehingga pemanggil dapat membuka file menggunakan with
pernyataan.