Как получить тип файла по расширению файла в python

Мне потребовалось угадывать тип файлов по их расширению. Для этого хорошо подошла библиотека mimetypes. На моем сервере находились файлы, например http://google.com/123.mp4. Мне нужно было делать определенные действия с определенными типами файлов. Это можно делать через guess_type:

mimetypes.guess_type('http://g.co/123.jpg')

Полный список поддерживаемых типов находится тут: https://www.iana.org/assignments/media-types/media-types.xhtml. В моем случае мне потребовалось просто захардкодить if на image/png, image/jpeg, video/mp4.

Но такой метод не дает 100% гарантии что тип файла на самом деле будет mp4. Библиотека лишь пытается предугадать тип по расширению файла. Но если файл оканчивается на mp4, никто не давал гарантии что внутри на самом деле не php код например. Если вам нужно 100% знать что файл на самом деле имеет тип то нужно использовать утилиты для файлов. Например для картинок - ImageMagic, для видео - ffmpeg. Они уже проверят так же внутренюю структуру файла по стандартам и у вас будет хоть какая то гарантия что файл не подделка.

Комментарии

Популярные сообщения из этого блога

DOS атака при помощи Python

Ведем телеграм канал через питон

Django migrations не видит изменения моделей