如何在python3中查找s3url是否是图像

2024-09-26 22:53:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我在S3里有一堆图像

https://s3.amazonaws.com/mybucket/image_datasets/im01.jpg

尽管在本例中它是一个图像,但url可能是图像,也可能不是图像

在python3客户机中,我需要弄清楚这个url是否是图像。我在想,是否有一种方法可以只读取http请求url的内容类型,类似于python3中描述的here

有人能建议一下吗


Tags: https图像imagecomurl客户机s3python3
2条回答

您通常会发出HEAD请求并检查响应中的内容类型。对于图像,内容类型将以image/开头

import requests
def is_image(uri):
    resp = requests.head(uri)
    return resp.headers.get('content-type', '').startswith('image/')

您希望发出HEAD请求,而不是GET请求,因为您不想下载图像。你只需要一些元数据。这就是头的目的

这不是特定于S3的,但是可以与任何公开访问的httpuri一起使用

I was thinking if there is a way to read only the Content-type of that http request url

是的,您可以使用这种代码(感谢请求库)来读取HTTP响应的内容类型:

import requests

r = requests.get('http://url/to/img.jpg')
print r.headers['Content-Type']

您将得到类似image/jpeg的结果

编辑:正如Dietrich Epp提到的,最好使用HEAD请求而不是GET

相关问题 更多 >

    热门问题