Как использовать python-magic для получения типа файла через Интернет? - PullRequest
4 голосов
/ 13 января 2011

Обычно я загружаю его в объект StringIO, а затем запускаю:

m = magic.Magic()
m.from_buffer(thefile.read(1024))

Но на этот раз я не могу загрузить файл, потому что размер изображения может быть 20 мегабайт.Я хочу использовать Python magic, чтобы найти тип файла без загрузки всего файла .

Если python-magic не может это сделать ... это следующий лучший способ наблюдать за пантомимойвведите заголовки?Но насколько это точно?

Мне нужна точность.

Ответы [ 2 ]

7 голосов
/ 13 января 2011

Вы можете позвонить read(1024) без загрузки всего файла:

thefile = urllib2.urlopen(someURL)

Тогда просто используйте существующий код. urlopen возвращает файл-подобный объект, так что это работает естественным образом.

2 голосов
/ 13 января 2011

Если это один из распространенных форматов изображений, таких как png of jpg, и вы видите, что сервер является надежным, то вы можете использовать заголовок 'Content-Type', чтобы получить то, что вы ищете.

Но это не так надежно, как использование части файла и передача его в python-magic, потому что если сервер не определил правильный формат и мог установить его в application / octet-stream. Это чаще встречается в видеоформатах, но с изображениями, я думаю, с Content-Type все в порядке.

Извините, я не могу найти статистику или исследование точности Content-Type. Предложенный ответ о загрузке только части файла также является хорошим вариантом.

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