2024-09-26 22:53:53 发布
网友
我在S3里有一堆图像
https://s3.amazonaws.com/mybucket/image_datasets/im01.jpg
尽管在本例中它是一个图像,但url可能是图像,也可能不是图像
在python3客户机中,我需要弄清楚这个url是否是图像。我在想,是否有一种方法可以只读取http请求url的内容类型,类似于python3中描述的here
有人能建议一下吗
您通常会发出HEAD请求并检查响应中的内容类型。对于图像,内容类型将以image/开头
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的结果
image/jpeg
编辑:正如Dietrich Epp提到的,最好使用HEAD请求而不是GET
您通常会发出HEAD请求并检查响应中的内容类型。对于图像,内容类型将以
image/
开头您希望发出HEAD请求,而不是GET请求,因为您不想下载图像。你只需要一些元数据。这就是头的目的
这不是特定于S3的,但是可以与任何公开访问的httpuri一起使用
是的,您可以使用这种代码(感谢请求库)来读取HTTP响应的内容类型:
您将得到类似
image/jpeg
的结果编辑:正如Dietrich Epp提到的,最好使用HEAD请求而不是GET
相关问题 更多 >
编程相关推荐