Модуль mimetypes Python не особенно точен и основывает свои результаты на расширении файла. Единственный способ, который я могу придумать, чтобы получить более точный результат, это вызвать команду Unix file
с subprocess.Popen
как так:
import subprocess
mimetype = subprocess.Popen(['file', '/path/to/file', '--mime-type', '-b'],
stdout=subprocess.PIPE).stdout.read().strip()
Это кажется неэлегантным. Есть ли лучший способ сделать это без вызова file
, но с тем же уровнем точности?