Вероятно искате да откриете MIME типа на качването, независимо от разширението на файла, и това често се прави чрез четене на заглавката на файла, за да откриете „магически числа“ или други битови модели, показващи истинската природа на файла. Често текстовите файлове са крайни случаи, където не се открива заглавка и първите x байта са ASCII или Unicode за печат.
Въпреки че това е малко заешка дупка, в която да се потопите, има няколко библиотеки на Python, които ще направят това вместо вас. Например:https://github.com/ahupp/python-magic ще работи за вашите нужди, като просто изведете mime типа според съдържанието на файла, който след това ще сравните с типовете, които искате да приемете.
Донякъде свързан набор от примерен код, специфичен за вашите нужди, може да бъде намерен тук:https://stackoverflow.com /a/28306825/7341881
Редактиране:Решението на Eddie е еквивалентно на функционалност; python-magic обгръща libmagic, което е това, в което влиза собствената команда "file" на Linux. Ако все пак решите да тръгнете по пътя на подпроцеса, бъдете много внимателни, че не създавате уязвимост на сигурността чрез неправилно дезинфекция на въведеното от потребителя (напр. предоставеното от потребителя име на файл). Това може да доведе до атака, предоставяща произволен достъп до средата за изпълнение на вашия сървър.