Как найти, если S3 URL-это изображение или нет в Python 3 - PullRequest
0 голосов
/ 20 февраля 2019

У меня есть куча изображений в S3

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

Хотя в этом примере это изображение, URL может быть или не быть изображением.

Из клиента Python 3,Мне нужно выяснить, является ли этот URL изображением или нет.Я думал, есть ли способ прочитать только Content-type этого URL-адреса http-запроса, аналогичный описанному здесь - в Python 3.

Может кто-нибудь предложить?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Обычно вы делаете запрос HEAD и проверяете Content-Type в ответе.Для изображений тип содержимого начинается с image/.

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

. Вы хотите сделать запрос HEAD, а не запрос GET, потому что вы не хотите загружать изображение.Вам просто нужны метаданные.Вот для чего HEAD.

Это не относится к S3, но работает с любым HTTP URI, который является общедоступным.

0 голосов
/ 20 февраля 2019

Я думал, есть ли способ прочитать только Тип содержимого этого URL-адреса http-запроса

Да, вы можете использовать этот код(благодаря библиотеке запросов), чтобы прочитать Content-Type ответа HTTP:

import requests

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

Вы получите результат, подобный image/jpeg.

EDIT :как упоминал Дитрих Эпп, лучше использовать запрос HEAD вместо GET.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...