You can do this:
import boto3
import botocore
s3 = boto3.resource('s3')
try:
s3.Object('my-bucket', 'dootdoot.jpg').load()
except botocore.exceptions.ClientError as e:
if e.response['Error']['Code'] == "404":
# The object does not exist.
...
else:
# Something else has gone wrong.
raise
else:
# The object does exist.
...
A HEAD request for a single key is done by load(), this is fast even though there is a big object or there are many objects in your bucket.
If you are checking if the object exists so that you can use it, then you just do a get() or download_file() directly instead of load().
You will find out more about the Amazon S3 on AWS S3.