1. ホーム
  2. python

[解決済み] botocoreのNoSuchKey例外をキャプチャする方法は?

2022-05-03 19:22:39

質問

私は"good"pythonを書こうとして、これでS3 no such key errorを捕らえようとしています。

session = botocore.session.get_session()
client = session.create_client('s3')
try:
    client.get_object(Bucket=BUCKET, Key=FILE)
except NoSuchKey as e:
    print >> sys.stderr, "no such key in bucket"

しかし、NoSuchKeyは定義されておらず、定義されている必要があるインポートまでたどることができません。

e.__class__botocore.errorfactory.NoSuchKey しかし from botocore.errorfactory import NoSuchKey はエラーになり from botocore.errorfactory import * もうまくいかないので、一般的なエラーは捕捉したくないのです。

どのように解決するのですか?

from botocore.exceptions import ClientError

try:
    response = self.client.get_object(Bucket=bucket, Key=key)
    return json.loads(response["Body"].read())
except ClientError as ex:
    if ex.response['Error']['Code'] == 'NoSuchKey':
        logger.info('No object found - returning empty')
        return dict()
    else:
        raise