如果s3文件未下载,捕获错误



我从S3下载了一个文件,像这样:

s3 = boto3.client('s3')
s3.download_file('testunzipping','DataPump_10000838.zip','/tmp/DataPump_10000838.zip')

现在它总是有效的。然而,我想添加一些错误处理。如果下载失败,如何检查或获得错误消息?我怎么知道有什么不对劲?

boto3是否提供任何错误处理功能?

我读到这个:检查S3下载是否成功完成,但我也在寻找替代方案。

这只是为了改进@balderman的答案,以实际检查导致BOTO请求失败的异常。

def download_and_verify(Bucket, Key, Filename):
try:
os.remove(Filename)
s3 = boto3.client('s3')
s3.download_file(Bucket,Key,Filename)
return os.path.exists(Filename)
except botocore.exceptions.ClientError as error:
print(error.response['Error']['Code']) #a summary of what went wrong
print(error.response['Error']['Message']) #explanation of what went wrong
return False

您可以像下面这样。下载并确保它已创建。

import boto3 
import os

def download_and_verify(Bucket, Key, Filename):
try:
os.remove(Filename)
s3 = boto3.client('s3')
s3.download_file(Bucket,Key,Filename)
return os.path.exists(Filename)
except Exception: # should narrow the scope of the exception
return False

最新更新