Cách sạch sẽ để xử lý tệp không tìm thấy ngoại lệ
LÝ LỊCH
Tôi có một chức năng nơi tôi lưu tệp cache từ aws s3. Tôi cung cấp cho nó đường dẫn trên s3 và cũng là đường dẫn cục bộ nơi tôi muốn tệp được lưu trong bộ nhớ cache. Đôi khi nếu tệp không tồn tại trên s3, nó sẽ trả về lỗi 404. Điều đó có lý nhưng tôi muốn xử lý nó một cách khéo léo. Điều tôi muốn làm là nếu tệp tôi đang cố gắng lưu vào bộ nhớ cache không tồn tại, tôi muốn hàm get_overview_stream của mình trả về Không có.
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
Sự cố giải pháp đã cố gắng
Tôi là người mới sử dụng python nên tôi không chắc liệu đây có phải là cách tốt nhất để xử lý ngoại lệ này hay không và nếu có cách nào sạch hơn. Nếu vậy tôi rất muốn nghe phản hồi.
Trả lời
Tôi khuyên bạn không nên mở tệp trong hàm của bạn mà thay vào đó trả về đường dẫn hoặc None
để người gọi có thể mở tệp bằng with
câu lệnh.