Проверка расширения файла с помощью python

Я хочу проверить правильность расширения данного файла или нет. Например, кто-то дает мне файл с расширением .zip, но на самом деле это может быть исполняемый файл.

Используя mimetypes, я не смог определить реальный тип файла. Насколько я понимаю, mimetypes нужно расширение.

Я могу сопоставить вывод команды unix file с некоторыми расширениями. Даже если вы измените расширение, вы не сможете обмануть команду file. Однако для этого решения требуется подпроцесс.

Я подумал, что может быть более питоническое решение этой проблемы. Кто-нибудь знает?


person Ricardo Cristian Ramirez    schedule 30.08.2013    source источник
comment
@JesseJ Для меня это не проблема. Он может обрабатываться как текстовый файл. Я хочу разделить архив, исполняемый файл, библиотеку и т. д.   -  person Ricardo Cristian Ramirez    schedule 31.08.2013


Ответы (2)


Поиск имени библиотеки C (libmagic), используемой для команды file, приводит к выводу 3. интересные пакеты Python на PyPI:

person KurzedMetal    schedule 30.08.2013

В конце концов, абсолютного способа познания не существует. По нескольким причинам:

  • В некоторых форматах файлов используются простые идентификаторы, а в других нет.
  • Для тех, кто этого не делает, единственным способом является анализ поведения программы, способной форматировать. Если программа может успешно открыть файл, значит, он ей принадлежит.
  • Но если нет, то файл может принадлежать сотням форматов, для открытия которых у вас нет программы.

Боюсь, вам придется довольствоваться частичным ответом, подобным тем, которые у вас уже есть.

person Mario Rossi    schedule 30.08.2013